C # и ловить исключения - PullRequest
4 голосов
/ 13 октября 2011

Рекомендуется ли добавлять общий улов исключений при обработке исключений. пример может прояснить этот вопрос

try{
 // do something
}catch(spomespecificException1 ex){
 //logging and other stuff
}catch(spomespecificException2 ex){
 //logging and other stuff
}catch(Exception ex){
 //logging and other stuff
}

если я добавлю ловушку исключения в стек

Ответы [ 4 ]

7 голосов
/ 13 октября 2011

Вы вообще не должны ловить эти исключения.Не ловите исключения, которые вы не знаете, как обработать.

«Обрабатывать» означает исправлятьЕсли вы не можете решить проблему или не можете добавить дополнительную информацию, исключите исключение.

4 голосов
/ 13 октября 2011

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

Конечно, есть причины за и против, но без подробностей, специфичных для вашей ситуации, невозможно сказать.

Итак, есть ли общее "правило" об этом?нет.

1 голос
/ 13 октября 2011

Код, который вы опубликовали, хорош, если вы хотите выполнить определенную обработку, относящуюся к этому исключению - что вы хотели бы сделать в одном из других блоков catch.Хороший пример может быть, когда вы пытаетесь подключиться к базе данных SQL, и вы можете обрабатывать различные сообщения об ошибках по-разному.

Кроме того, помните, что есть блок "finally", который вы можете добавить в конецсделайте все, чтобы очистить (и общий) код обработки, но вы не получите там информацию об исключениях

0 голосов
/ 13 октября 2011

Исключения, как правило, случаются, особенно если вы обращаетесь к чему-то вне приложения, например, к ошибкам подключения и т. Д.

Если вы хотите отфильтровать тип исключений и сделать что-то другое для каждого конкретного типа, то в этом нет ничего плохого

Лучшей практикой кодирования было бы предотвращение возникновения этих исключений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...