Я рефакторирую приложение WinForms среднего размера, написанное другими разработчиками, и почти каждый метод каждого класса окружен try-catch
блок. В 99% случаев этот catch блокирует только журналы исключений или ресурсы очистки и возвращает статус ошибки.
Я думаю, очевидно, что в этом приложении отсутствует надлежащий механизм обработки исключений, и я планирую удалить большинство блоков try-catch.
Есть ли в этом обратная сторона? Как бы вы это сделали? Я планирую:
Для надлежащего протоколирования исключений и предотвращения их распространения на пользователя, используйте обработчик Application.ThreadException
Для случаев, когда есть ресурс, который требует очистки, оставьте попытку -catch block как есть
Обновление : использование с использованием блоков
или try-finally
является лучшим способом. Спасибо за ответы.
Любые исправления / предложения приветствуются.
Изменить: В третьем пункте, с "return-false-on-error" я имел в виду такие методы:
bool MethodThatDoesSomething() {
try {
DoSomething(); // might throw IOException
} catch(Exception e) {
return false;
}
}
Я хотел бы переписать это как:
void MethodThatDoesSomething() {
DoSomething(); // might throw IOException
}
// try-catch in the caller instead of checking MethodThatDoesSomething's return value
try {
MethodThatDoesSomething()
} catch(IOException e) {
HandleException(e);
}