Студопедия

КАТЕГОРИИ:

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


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




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

■ Какой производный от Exception тип исключения будет генерироваться? Настоятельно рекомендуется выбирать содержательный тип. Представьте себе код, расположенный выше в стеке вызовов, и как тот код должен узнать, что метод потерпел неудачу, чтобы выполнить корректное восстановление после сбоя. Можно задействовать тип, уже определенный в FCL, но может быть, что в FCL нет типа, полностью соответствующего нужной семантике. Поэтому придется определять собственный тип, непосредственно наследующий SystemException. Если нужно определить иерархию типов исключений, настоятельно рекомендуется создавать максимально плоскую и широкую иерархию, чтобы свести до минимума число базовых классов. Причина в том, что базовые классы действуют так, чтобы обеспечить обработку многих ошибок как одной ошибки, и это обычно опасно. Таким образом, никогда не следует генерировать тип SystemException и надо соблюдать максимальную осторожность при генерации любого другого типа исключений, являющегося базовым классом.

■ Какое строковое сообщение передавать в конструктор типа исключения? При генерации исключения нужно предоставлять строковое сообщение с детальной информацией о том, почему метод не смог выполнить свою задачу. Если исключение перехватывается и обрабатывается, это строковое сообщение не видно. А вот сообщения необработанных исключений обычно регистрируются в журнале. Необработанное исключение информирует о настоящем дефекте приложения, и разработчик программы должен позаботиться об искоренении дефекта. У конечного пользователя нет исходного текста и возможности исправить недостаток кода и перекомпоновать программу. Вообще говоря, это строковое сообщение конечный пользователь видеть не должен, поэтому оно может содержать массу технических деталей и предоставлять всю необходимую разработчикам информацию для устранения дефекта в коде. Кроме того, так как все разработчики должны понимать английский (ведь языки программирования и FCL-классы и методы содержат много английских слов), обычно нет нужды локализовывать строковые сообщения исключений. Впрочем, вы вправе локализовать строки, если создаете библиотеку классов для разработчиков, говорящих на других языках. В Microsoft локализуют сообщения исключений, генерируемых FCL, так как эту библиотеку классов используют разработчики, разговаривающие на самых разных языках.


Поделиться:

Дата добавления: 2015-04-21; просмотров: 55; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.005 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты