Загалом, використання спробувати / ловити стільки застаріло, оскільки блок лову так дорогий з точки зору ресурсів. Спробуйте / зловити використання нагадує мені управління ризиками . Управління ризиками має два виміри:
- Ймовірність виникнення ризику
- Шкода, яку він може мати
Тепер, якщо ви виходите з дому, фортепіано кудись падає на вашу голову, поки така ймовірність не трапиться (можливо 0,001%), але може вбити вас.
Обробка винятків така. Спробуйте блок не дорого. Але блок лову дійсно дорогий, тому що йому потрібно створити таблицю сліду стека та виконувати інші речі. Тому, приймаючи рішення про спробувати / ловити блоки, слід враховувати, скільки разів ви, мабуть, потрапили на блок лову. Якщо серед 10 000 звичаїв ви потрапили в нього лише 1 раз, тоді використовуйте його. Але якщо це форма, і користувач, ймовірно, не заповнює її правильно 50% разів, тоді вам слід уникати введення блоку спробу / лову.
У місцях, де ймовірність виникнення винятків висока, рекомендується використовувати 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.
}