Лекция 11
15. Исключительные ситуации
Нарушение в работе программы (не корректное действие) называется исключением. Исключение останавливает текущий поток программы и если никакие меры не предпринимаются, программа просто прекращает выполнение. Причиной исключений могут быть ошибки в программе (например, деление числа на ноль) или неожиданный ввод (например, выбор несуществующего файла, или вместо цифры для выполнения арифметических действий – буква). Задачей пользователя является предоставление программе возможности устранить проблемы, не приводя к сбою.
Обработку исключений может выполнять
– системный обработчик исключений или
– написанный пользователем программный код, который выводит сообщение.
Для обработки исключений используются глобальные и локальные обработчики исключений.
Глобальные обработчики – стандартные предусмотрены операционной системой и вызываются автоматически, если отладчик подключен. Обработчик завершает выполнение программы, выдавая информацию о возникновении исключения. Он не всегда понятен пользователю, не говоря уже о досрочном завершении программы.
Локальные обработчики создает сам пользователь в виде сообщений. Программист может перехватить исключительные ситуации и сделать их обработку после чего продолжится нормальный ход вычислений приложения.
Обработка локальных исключений в C# реализована с помощью ключевых слов, — try, catch и finally — с помощью которых программа обнаруживает исключения, устраняет их и продолжает выполнение. Они способствуют повышению надежности приложений.
15.1. Виды исключений:
Исключения имеют типы, являющиеся производными от System.Exception. Некоторые исключения, генерируемые при компиляции:
Тип_Исключения |
Описание |
ArithmeticException |
Основной класс исключений, происходящих при выполнении арифметических операций, таких как DivideByZeroException и OverflowException. |
ArrayTypeMismatchException |
Создается, когда тип сохраняемого значения несовместим с фактическим типом массива. |
DivideByZeroException |
Создается при попытке разделить целое число на ноль. |
IndexOutOfRangeException |
Создается при попытке индексирования массива, если индекс меньше нуля или выходит за границы массива. |
InvalidCastException |
Создается, когда неверно выполнено динамическое приведение типов. |
NullReferenceException |
Создается при попытке ссылки на объект, значение которого равно null. |
OutOfMemoryException |
Создается при неудаче попытки выделения памяти с помощью оператора new. Это означает, что память, доступная для среды выполнения, уже исчерпана. |
OverflowException |
Создается при переполнении арифметической операции. |
StackOverflowException |
Создается, когда стековая память переполнена. |