На этом шаге мы перечислим основные классы типов исключений.
При обработке исключений можно задавать классы типов исключений. Например, обрабатывать все исключительные ситуации из класса исключений, возникающих при выполнении арифметических операций и т. п. Все типы таких классов расположены в пространстве System. В таблице 1 представлены некоторые такие классы.
| Класс | Исключительная ситуация возникает: |
|---|---|
| AccessVioiationException | Когда идет попытка чтения/записи в защищенной памяти |
| AppDomainUnloadedException | Когда идет попытка доступа к незагружаемой области приложения |
| ApplicationException | Когда в приложении возникает не фатальная ошибка |
| ArgumentExcерtion | Когда один из аргументов метода недействителен |
| ArgumentNullException | Когда методу передается нулевая ссылка, а метод ее не распознает как действительный аргумент |
| ArgumentOutOfRangeException | Когда значение аргумента выходит за границы, определенные методом |
| ArithmeticException | При ошибках в арифметических операциях и при преобразовании данных |
| ArrayTypeMismatchException | При попытке поместить элемент в массив, тип которого не совпадает с типом элемента |
| DivideByZeroException | Когда идет попытка деления числа на ноль |
| EntryPointNotFoundException | При попытке загрузить класс в случае отсутствия точки входа (например, в приложении отсутствует метод main()) |
| Exception | В момент выполнения приложения |
| FieldAccessException | При попытке доступа внутри класса к членам с атрибутами private или protected |
| FormatException | Когда обнаруживается нарушение формата аргумента, объявленного в методе |
| IndexOutOfRangeException | При выходе индекса массива за границы массива |
| InsufficientMemoryException | Из-за нехватки памяти |
| InvalidCastException | При неправильном преобразовании данных |
| InivalidOperationException | Когда для текущего состояния объекта вызов метода неверен |
| MemberAccessException | При неудачной попытке доступа к члену класса |
| MethodAccessException | При неудачной попытке доступа к private или protected-методу внутри класса |
| MissingFieldException | При попытке динамического доступа к несуществующему полю класса |
| MissingMemberException | При попытке динамического доступа к несуществующему члену класса |
| MissingMethodException | При попытке динамического доступа к несуществующему методу класса |
| NotFiniteNumberException | При обработке несуществующего или бесконечного числа с плавающей точкой |
| NotSupportedException | При вызове метода, который не поддерживается, или при работе с потоком данных, когда требуемая функциональность не поддерживается |
| NullReferenceException | При попытке разыменовать нулевую ссылку |
| OutOfMemoryException | При нехватке памяти для продолжения работы программы |
| Overf1owException | При превышении значений арифметических операций или операций преобразования в контролируемом контексте |
| PlatformNotSupportedException | При попытке запустить приложение на неподдерживаемой платформе |
| RankException | При попытке передачи массива с неверной размерностью в метод |
| StackOverflowException | При переполнении стека (слишком много вызовов методов) |
| TimeoutException | При истечении времени, отведенного для процесса или операции |
| TypeLoadException | При сбое в момент загрузки некоторого типа |
| TypeUnloadedException | При попытке доступа к незагруженному классу |
| UnauthorizedAcсessException | При попытке неавторизованного доступа (операционная система отвергает доступ из-за ошибки ввода/вывода или из-за нарушения специального типа безопасности) |
| UriFormatExcерtion | При обнаружении неверного Uniform Resource Identifier (URI) |
На следующем шаге мы рассмотрим пример их использования.