Ответ 1
Либо return
в catch-блоке, повторите исключение или переместите код ниже блока try внутри блока try.
У меня есть пример try/catch в моем методе:
}
catch (OurCustomExceptionObject1 ex)
{
txtErrorMessage.InnerHtml = "test 1";
}
catch(OurCustomExceptionObject2 ex)
{
txtErrorMessage.InnerHtml = "test 2";
}
catch (OurCustomExceptionObject3 ex)
{
txtErrorMessage.InnerHtml = "test 3";
}
... rest of code here is being executed after the try/catch
Я не хочу, чтобы остальная часть кода запускалась, если было обнаружено какое-либо из исключений. Я обрабатываю исключения. Я слышал, почему-то не использовать Exit Try. Это правда, это плохо сделать? Это правильный способ остановить выполнение кода после этого выписки?
Либо return
в catch-блоке, повторите исключение или переместите код ниже блока try внутри блока try.
Приходят сразу два варианта:
return
прямо изнутри каждого catch
(как предположил BlueRaja)errorOccurred
) в блоках catch
для исключений, которые вы не хотите разрешать, затем поместите if (errorOccurred) return;
после всего блока try/catchПоследнее может быть более читаемым для других разработчиков, так как легко пропустить прошлое, что происходит внутри catch
, чтобы выяснить, что произойдет потом. Видя вопиющее if (errorOccurred) return;
, трудно понять, что произошло.
С точки зрения высокого уровня, я думаю, что это может быть нарушением (по крайней мере) принципа единой ответственности, если ваш код пытается сделать что-то, что может потерпеть неудачу, а затем продолжить делать еще кое-что.
Ради ответа, хотя, если вы хотели сделать взломать (что всегда плохо, так и нет), вы могли бы сделать
bool success = true;
try
{
// the good ol' college try
}
catch (...)
{
success = false;
}
if (success)
{
// do the rest of your stuff
}
изменить: или, альтернативно, как предложил BlueRaja, поместите весь свой код в блок try. Если первый бит терпит неудачу, он терпит неудачу. Остальная часть кода не будет работать в любом случае.