Основные категории исключений
C# предоставляет иерархию типов исключений, которая разработана для обработки разных сценариев ошибок. Если ты понимаешь эти категории, то сможешь писать более надёжный код обработки ошибок.
Распространённые исключения, связанные с аргументами
- ArgumentNullException: выбрасывается, когда метод получает
null в качестве аргумента, а требуется значение, отличное от null
- ArgumentOutOfRangeException: возникает, когда значение аргумента выходит за пределы допустимого диапазона для этого параметра
Исключения при выполнении операций
- DivideByZeroException: выбрасывается при попытке разделить число на ноль
- NullReferenceException: возникает при попытке обратиться к члену объекта через
null
- StackOverflowException: выбрасывается, когда глубокая рекурсия или глубокий стек вызовов исчерпывают доступную память стека
Исключения, связанные с состоянием и доступом к файлам
- InvalidOperationException: возникает, когда текущее состояние объекта не позволяет выполнить запрашиваемую операцию. Например, вызов методов на закрытом подключении к БД
- FileNotFoundException: возникает при попытке обратиться к файлу, которого не существует в файловой системе
Лучшие практики
Эти исключения обычно делятся на две категории:
- Предотвратимые исключения — условия, которые ты должен проверить перед выполнением кода (например, null-значения или аргументы вне диапазона)
- Непредотвратимые исключения — условия, которые возникают неожиданно во время выполнения (например, отсутствующие файлы или переполнение стека)
Ключ к эффективной обработке исключений — это перехват конкретных типов исключений вместо общих, что позволяет восстанавливаться после ошибок целенаправленно и делает код понятнее.