Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Приложения должны иметь возможность обрабатывать ошибки, возникающие во время выполнения последовательно. .NET предоставляет модель для уведомления приложений об ошибках в единообразном виде: операции .NET указывают на сбой путем создания исключений.
Исключения
Исключением является любое условие ошибки или непредвиденное поведение, обнаруженное исполняемой программой. Исключения могут возникать из-за сбоя в коде или в коде, который вызывается (например, общая библиотека), недоступных ресурсов операционной системы, непредвиденных условий, с которыми сталкивается среда выполнения (например, код, который не может быть проверен) и т. д. Приложение может восстановиться после некоторых из этих ситуаций, но не от других. Хотя вы можете восстановить из большинства исключений приложений, вы не можете восстановить из большинства исключений среды выполнения.
В .NET исключение — это объект, наследуемый от System.Exception класса. Исключение генерируется из блока кода, в котором возникла проблема. Исключение передается в стек до тех пор, пока приложение не обработает его или программа завершит работу.
Исключения и традиционные методы обработки ошибок
Традиционно модель обработки ошибок языка зависит от уникального способа обнаружения ошибок и поиска обработчиков для них или механизма обработки ошибок, предоставляемого операционной системой. Способ реализации обработки исключений .NET обеспечивает следующие преимущества:
Создание и обработка исключений работает одинаково для языков программирования .NET.
Не требуется какой-либо синтаксис языка для обработки исключений, но позволяет каждому языку определять собственный синтаксис.
Исключения можно создавать в пределах процесса и даже границы компьютера.
Код обработки исключений можно добавить в приложение для повышения надежности программы.
Исключения предлагают преимущества других методов уведомления об ошибках, таких как коды возврата. Сбои не остаются незамеченными, потому что если возникает исключение и его не обработать, среда выполнения завершает работу вашего приложения. Недопустимые значения не продолжают распространяться по системе из-за кода, который не проверяет на наличие кода возврата ошибки.
Распространенные исключения
В следующей таблице перечислены некоторые распространенные исключения с примерами того, что может их вызвать.
| Тип исключения | Описание | Пример |
|---|---|---|
| Exception | Базовый класс для всех исключений. | Нет (используйте производный класс этого исключения). |
| IndexOutOfRangeException | Создается средой выполнения только в том случае, если массив индексируется неправильно. | Индексирование массива за пределами допустимого диапазона: arr[arr.Length+1] |
| NullReferenceException | Создается средой выполнения только при ссылке на пустой объект. | object o = null; o.ToString(); |
| InvalidOperationException | Выбрасывается методами, когда в недопустимом состоянии. | Вызов Enumerator.MoveNext() после удаления элемента из базовой коллекции. |
| ArgumentException | Базовый класс для всех исключений аргументов. | Нет (используйте производный класс этого исключения). |
| ArgumentNullException | Вызывается методами, которые не позволяют аргументу иметь значение NULL. | String s = null; "Calculate".IndexOf(s); |
| ArgumentOutOfRangeException | Вызывается методами, которые проверяют, находятся ли аргументы в заданном диапазоне. | String s = "string"; s.Substring(s.Length+1); |
См. также
- Класс исключений и свойства
- Как использовать блок Try-Catch для перехвата исключений
- Как использовать конкретные исключения в блоке Catch
- Как: Явно выбрасывать исключения
- Практическое руководство. Создание исключений User-Defined
- Использование обработчиков исключений User-Filtered
- Как использовать блоки Finally
- Обработка исключений взаимодействия COM
- Лучшие практики по обработке исключений
- Что необходимо знать о исключениях во время выполнения для каждого разработчика.