и снова про исключения
От: MadHuman Россия  
Дата: 24.12.18 14:13
Оценка:
Всем привет!

Допустим вызываем MethodA (который в свою очередь может вызвать MethodB и ещё ряд подобных, каждый из которых в свою очередь тоже что-то вызывает) и вызов закончился ошибкой.
Возможные подходы по обработке/генерации исключений:
а. в MethodA делаем кэтч и генерим новое исключение (возможно спец. класса) с передачей в качестве InnerException исходного исключения.
особенно такое имеет смысл если с уровня MethodA надо в новое исключение включить какую-то доп. информацию. Например о параметре с которым вызван метод или о том, на какой фазе процесса упали и тп.

б. тоже, но перегенерим исходное исключение, добавив в исходный инстанс исключения в Data эту доп. информацию.

чем не нравится а. — верхнее исключение как-бы маскирует базовое и надо точно понимать ситуацию.
например при вызове через рефлексию, верхнее будет что-то типа MethodInvocationException, и именно вложенное содержит актуальную информацию что не так.
более того, верхнее в этом случае ничего полезного не несёт и даже вредно, тк его надо пропускать и добираться до вложенного и его анализировать.
но могут быть и другие случаи, когда верхнее отражает суть, а вложенное уже какие-то второстепенные детали на основании которых сгенерили верхнее.

особенно эта неоднозначность проявляется при построении какой-то финальной обработки ошибки (например веб-реквеста), когда хз что выдать юзеру — либо верхнее, либо вложенное.

Господа, кто на практике к чему пришел в подобных случаях?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.