В целом, использование try / catch настолько не рекомендуется, потому что catch-блок очень дорог с точки зрения ресурсов. Использование try / catch напоминает мне об управлении рисками . Управление рисками имеет два аспекта:
- Вероятность возникновения риска
- Ущерб, который он может иметь
Теперь, если вы выходите из дома, пианино, падающее на вашу голову где-то, вряд ли случится (возможно, 0,001%), но может вас убить.
Обработка исключений такая. Попробуйте блок не дорого. Но catch block действительно дорог, потому что для этого нужно создать таблицу трассировки стека и делать другие вещи. Поэтому, принимая решение о блоках try / catch, вы должны учитывать, сколько раз вы, вероятно, попадете в блок catch. Если среди 10000 использований вы нажмете только 1 раз, используйте его. Но если это форма, и пользователь, вероятно, не заполняет ее правильно 50% раз, тогда вам следует избегать применения блока try / catch.
В местах, где высока вероятность возникновения исключения, рекомендуется использовать if {} else {}
блоки, чтобы избежать возникновения исключения. Например, где вы хотите разделить два числа вместо записи:
try
{
int result = a/b;
}
catch (DivisionByZeroException ex)
{
// Showing a message here, and logging of course.
}
Вы должны написать:
if (b == 0)
{
int result = a/b;
}
else
{
// Showing a message to user to change the value of b, etc.
}