На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

.NET исключения: иерархия


Механизм обработки исключительных ситуаций дает возможность работать только с объектами класса Exception и производными от него. Хотя захватывать исключения типов, не принадлежащих к данному классу – применяя обработчик catch без параметров. Это необходимо в основном тогда, когда есть участки кода, написанного на другом языке, в котором не требуется, чтобы все исключения происходили от Exception в .NET Framework.

Класс Exception пространства имен System – один из базовых классов иерархии исключений .NET Framework. Самые важные производные классы Exception: ApplicationException – базовый класс; он расширяется для создания типов данных исключений самими разработчиками. Из таких исключений (большинства их) приложения могут восстанавливаться и продолжать работу.

SystemException – генерируется CLR в любое время работы приложения. Некоторые такие исключения во время прогона (производные от класса SystemException) можно избежать просто с помощью корректного кодирования. К примеру, если приложение хочет получить доступ к элементу массива с некорректным индексом, то CLR выдаст исключение IndexOutOfRangeException. Аналогично и со ссылкой со значением null (то есть когда приложение пытается получить ссылку на объект для работы с еще не созданным объектом). В этом случае сгенерируется исключение NullReferenceException. Приложения на C# по рекомендациям Microsoft не должны захватывать или выдавать SystemException, так как программы поле этого могут не возобновлять свою работу.

Основным преимуществом применения иерархии обработки исключений является тот факт, что обработчик catch имеет возможность работать с конкретными исключениями или применять тип базового класса для захвата связанных. К примеру, можно использовать catch с параметром исключения типа Exception для захвата любого исключения, так как этот класс базовый для всех. Именно с помощью этого и достигается полиморфная обработка исключений. Если тип захватываемого исключения не указывается, то обработчик может и не работать с ним дальше – не всегда требуется доступ.

Применение наследования при работе исключениями дает возможность обработчику работать не только с исключениями производных классов отдельно, но также и захватывать все типы базового класса с комментариями. Это можно использовать, к примеру, тогда, когда поведение обработки будет одинаково для всех классов.




тегистатьи IT, .NET





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Пишу программы на заказ Java
Как между делом создать программу на заказ


© upread.ru 2013-2019
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.