Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

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

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

 



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 в своем коде, потому что они не несут в себе никакой специфики конкретной ошибочной ситуации.



C# и Java. Исключения. Основные принципы использования механизма

исключений.

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

Генерация исключений

 Исключение какого типа генерировать?

 Рекомендуется использовать содержательный тип

 Иерархия должна быть максимально плоской и широкой

 Имя исключения должно отражать суть проблемы, а не место возникновения [Name The Problem Not The Thrower]

 Используется суффикс: Exception

Генерация исключений

 Какое сообщение передавать?

 детальная техническая информация

 пользователь не должен видеть это сообщение

 для необработанных исключений сообщения регистрируются в журнале

«Политические» решения

 Разработка библиотек классов

 не следует принимать решений, что считать ошибкой, а что — нет

 Разработка приложений

 разработчики сами определяют политику

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

Обработка исключений

 Не следует «проглатывать» исключения

 Повторно сгенерировать то же самое исключение:

 throw;

 Или сгенерировать другое исключение, передав исходное в качестве внутреннего:

 throw new OtherException(параметры, e);

Обработка исключений

 Не следует передавать «выше» исключения, поступившие от служб более низкого уровня

 Исключения преобразуются в новую форму; включают исключения более низких уровней

 Convert Exceptions или Exception Abstraction

Обработка исключений

public void HighLevelMethod() {

try {

LowLevelMethod1();

LowLevelMethod2();

} catch(LowLevelException low) {

throw new HighLevelException("...", low);

}}

Пример (в падлу копировать, там дофига, начало 8.pdf 16 страница)

Java — иерархия










Последнее изменение этой страницы: 2018-05-27; просмотров: 207.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...