Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРИС_шпоры.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
3 Мб
Скачать
☆

23.C# и Java. Исключения. Механизм исключений.

Исключение (exception) — оповещение о невозможности выполнить запрошенное действие

Механизм

void SomeMethod() {

try { 1 }

catch(IOException) { 2 }

catch(Exception) { 3 }

catch { 4 }

finally { 5 }

6

}

Блок try

 Содержит код, требующий:

 освобождения ресурсов

 или восстановления после исключения

 Должен быть связан с finally или catch

Блок catch

 Содержит код, выполняющийся при возникновении исключения

 Код не выполняется, если исключение не возникло

 Тип исключения — System.Exception или потомок

 Блоки catch просматриваются «сверху вниз»

Блок catch

 Если фильтр не найден — просматривается стек вызовов

 Если фильтр не найден — исключение считается необработанным

 Код выполняет восстановление после исключения, а также:

 генерируется то же исключение;

 генерируется другое исключение

 ничего не предпринимается

Блок finally

 Содержит код, выполнение которого гарантируется

 операции очистки после действий в блоке try

 Не обязателен

 Размещается после всех блоков catch

 Может быть только один

24.C# и Java. Исключения. Классы исключений.

Исключение (exception) — оповещение о невозможности выполнить запрошенное действие

Классы исключений

 базовый тип всех исключений — Exception

 CLR генерирует исключения-потомки SystemException

 в приложениях генерируются потомки ApplicationException

 хотели как лучше...

Класс System.Exception

 Message

 Data

 Source — имя сборки, сгенерировавшей исключение

 StackTrace

 TargetSite — метод, сгенерировавший исключение

 HelpLink — URL документации исключения

 InnerException

В С# исключение — это объект, созданный (говорят, что исключение возбуждено или сгенерировано) при наступлении определенной исключительной ошибочной ситуации. Этот объект содержит информацию, которая может помочь отследить причину возникновения проблемы. Хотя вы можете создавать свои собственные классы исключений (и мы займемся этим позднее), .NET представляет множество предопределенных классов исключений. В этом разделе будет представлен краткий обзор некоторых исключений, доступных в базовой библиотеке классов .NET. Microsoft предлагает большое количество классов исключений в .NET — их слишком много, чтобы привести здесь полный список. Диаграмма иерархии классов на рис. 14.1 оказывает некоторые из этих классов, чтобы дать представление об общем шаблоне. Все классы, показанные на рис. 14.1, является частью пространства имен System, за исключением IOException и классов, унаследованных от IOException, которые представляют собой часть пространства имен System. 10. Пространство имен System. 10 имеет дело с чтением и записью данных в файлы. Вообще не существует определенного пространства имен для исключений; классы исключений должны быть помещены в те пространства, где находятся классы, которые могут их генерировать, потому исключения, связанные с вводом-выводом (Ю) находятся в System. 10, а другие классы исключений вы найдете в других пространствах имен базовых классов. Наиболее общий класс исключений, System.Exception, унаследован от System. Object, как и следовало ожидать от класса .NET. Вообще вы не должны создавать объекты исключений System.Exception в своем коде, потому что они не несут в себе никакой специфики конкретной ошибочной ситуации.