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

Генерация общего исключения

Ключевое слово sealed | Ключевые слова virtual и override | Абстрактные классы | Полиморфный интерфейс | Сокрытие методов | Правила приведения к базовому и производному классу | Ключевое слово is | Определение вложенных типов | Обработка исключений | Void main () |


Читайте также:
  1. Административная юстиция в странах системы общего права
  2. Алгоритмы взаимоисключения Деккера и Петерсона.
  3. Анализ общего объема и ассортиментной структуры розничного товарооборота
  4. Б) уменьшение общего белка
  5. Быстрое восстановление и генерация энергии
  6. Вторая позиционная задача (построение линии пересечения плоскостей общего положения)
  7. Выборы в органы местного самоуправления на основе всеобщего, прямого, равного и тайного голосования. (См. пункт 4)

Чтобы продемонстрировать использование System.Exception, обратимся к проекту CarExample а точнее к методу SpeedUp() класса Саг.

Имея функционирующий класс Саг, давайте рассмотрим простейший способ генерации исключения. Текущая реализация метода SpeedUp() предусматривает просто отображение сообщения об ошибке, когда предпринимается попытка разогнать автомобиль (объект Саг) до скорости, превышающей максимальный предел.

Для изменения этого метода так, чтобы при попытке разогнать автомобиль до скорости, превышающий установленный в классе Саг предел, генерировалось исключение, потребуется создать и сконфигурировать новый экземпляр класса System.Exception и установить значение доступного только для чтения свойства Message через конструктор класса. Чтобы объект ошибки отправлялся обратно вызывающей стороне, в С# используется ключевое слово throw.

(этот код вставляем в проект CarExample, в класс Car)

Задание!!!: протестировать, исправить возможные ошибки

Прежде чем переходить к рассмотрению перехвата данного исключения в вызывающем коде, необходимо отметить несколько интересных моментов. При генерации исключения то, как будет выглядеть ошибка и когда она должна выдаваться, решает программист. В рассматриваемом примере предполагается, что при попытке увеличить скорость автомобиля (объекта Саг), который уже вышел из строя, должен генерироваться объект System.Exception для уведомления о том, что метод SpeedUp() не может быть продолжен (это предположение может оказаться как подходящим, так и нет, в зависимости от создаваемого приложения).

В качестве альтернативы метод SpeedUp() можно было бы реализовать и так, чтобы он производил автоматическое восстановление, не выдавая перед этим никакого исключения. По большому счету, исключения должны генерироваться только в случае возникновения более критичных условий (например, отсутствии нужного файла, невозможности подключиться к базе данных и т.п.). Принятие решения о том, что должно служить причиной генерации исключения, требует серьезного продумывания и поиска веских оснований на стадии проектирования. Для преследуемых сейчас целей давайте считать, что попытка увеличить скорость неисправного автомобиля является вполне оправданной причиной для выдачи исключения.


Дата добавления: 2015-07-25; просмотров: 56 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Составляющие процесса обработки исключений в .NET| Перехват исключений

mybiblioteka.su - 2015-2024 год. (0.006 сек.)