Удаление лишних блоков try-catch

Я рефакторирую приложение 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);
}
9
задан henginy 10 August 2011 в 08:58
поделиться