Иногда лучше не иметь дело с исключениями, если вы действительно не хотите иметь дело с дополнительной ответственностью, которая сопровождает исключения. Например, вместо того, чтобы ловить NullReferenceException
, почему бы просто не убедиться, что объект существует, прежде чем пытаться что-то с ним сделать?
if (yourObject != null)
{
... do something meaningful with yourObject ...
}
Исключения лучше всего зарезервировать для обработки тех вещей, которые вы действительно не можете контролировать, таких как внезапная потеря соединения или вещи, которые могут прервать длительный процесс, такой как импорт данных. Когда выдается исключение, независимо от причины, ваше приложение достигло точки нестабильности. Вы ловите исключение, чтобы вернуть приложение в состояние стабильности, убирая беспорядок, например. избавиться от потерянного соединения и создать новое ИЛИ занести в журнал строку, где произошла ошибка, и перейти к следующей строке.
Последние 15 лет я занимался обработкой исключений, начиная с первых шести версий Delphi, вплоть до (и включая) .NET 1.0-4.0. Это мощный инструмент, но он часто используется слишком часто. Я обнаружил, что в течение этого времени наиболее эффективный процесс обработки исключений - откладывание до if-then
до try-catch
.