2010-03-29 3 views
0

только общий вопрос, Вы ВСЕГДА должны обрабатывать ошибки?Обработка ошибок с помощью try catch (AGAIN)

Я просто обсуждал это с одним из моих коллег, где в своем коде я вижу много мест, где вещи обернуты вокруг оператора try, а в выводе catch ничего нет.

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

просто хочу знать, что другие люди думают

спасибо.

ответ

2

Если вы не можете обработать исключение, то не поймать его. Возможно, кто-то еще в стеке вызовов может должным образом обработать его, и поздравления, теперь вы мешали им выполнять свою работу < golfclap/>.

1

Практика вылавливания исключения, а затем «замалчивание» - это ЗЛО! Я думаю, 99,99% всех SOers согласятся на это.

Вот очень nice article from CodeProject об оптимальных методах обработки исключений. Угадайте, что посвящается одному из разделов?

Худшее, что вы можете сделать, это уловить (исключение) и поместить на него пустой блок кода. Никогда не делай этого.

Любая статья, посвященная обработке исключений, стоит ее соли, будет упоминать концепцию проглатывания исключений, а не делать это в некотором роде.

0

Только ситы совершают сделки в абсолютах. Серьезно, однако, я могу подумать, по крайней мере, о одном экземпляре, с которым мы столкнулись совсем недавно, когда было бы желательно просто бросить его и двигаться дальше. Недавно мы внедрили внутреннее решение отслеживания кликов, которое отправляет запрос async AJAX на контроллер MVC для регистрации. Нам все равно, если он не будет зарегистрирован, и мы не хотим, чтобы наши собственные журналы заполнялись журналами ошибок, которые нам не нужны. так зачем беспокоиться о том, что вы делаете что-либо в блоке catch. Мы рассмотрели возможность добавления кода в блоке catch, чтобы по крайней мере увеличить счетчик, когда мы получили сообщение об ошибке, но в то время для этого не было никаких деловых причин.

Это действительно сводится к тому, что вы делаете это из лености или потому, что на самом деле есть веская причина.

Я, вероятно, поймаю вас за то, что вы сказали, что это плохая практика в целом. Получаю ли я очки за храбрость?

0

Вы должны обработать исключение, если есть что-то вы можете сделать с этим


try 
{ 
    //CODE 
} 
catch 
{ 
    LogException(); 
    //and/or 
    RollbackTransaction(); 
    //and/or 
    ShowFriendlyMessageToUser(); 
    //and/or 
    DoSomethingUsefullWithTheException(); 
    throw; //This is optional 
} 

Это не имеет смысла, но я видел это много


try 
{ 
    //CODE 
} 
catch 
{ 
    throw; 
} 

EDIT 1 И вам нужен очень хороший аргумент, чтобы поставить что-то вроде этого. И, вероятно, вас все равно уволят: -p


try 
{ 
    //CODE 
} 
catch 
{ 
    //HIDE TO THE WORLD THAT THIS IS FAILING 
} 
Смежные вопросы