Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Перехват исключения типа ExceptB

Перехват исключения типа ExceptA.

System.Exception: Exception of type System.Exception was thrown,

atOrderMatters.Main()

Обратите внимание на порядок следования catch-инструкций. Это — единственно правильный вариант. Поскольку класс ExceptB выведен из класса ExceptA, catch-инструкция для исключений типа ExceptB должна стоять перед инструкцией, предназначенной для перехвата исключений типа ExceptA. Точно так же catch-инструкция для исключений класса Exception (который является базовым для всех исключений) должна стоять последней. Чтобы убедиться в этом, попробуйте переставить catch - инструкции в другом порядке. Это приведет к ошибке при компиляции.

Часто catch - инструкцию, определенную для исключений базового класса, успешно используют для перехвата целой категории исключений. Предположим, вы создаете набор исключений для некоторого устройства. Если вывести все эти исключения из общего базового класса, то приложения, которым не требуется подробные сведения о возникшей проблеме, могли бы просто перехватывать исключение, настроенное на базовый класс, избегнув тем самым ненужного дублирования кода.

 

7.11 Использование ключевых слов checked и unchecked

В С# предусмотрено специальное средство, которое связано с генерированием исключений, связанных с переполнением в арифметических вычислениях. Как вы знаете, в некоторых случаях при вычислении арифметических выражений получается результат, который выходит за пределы диапазона, определенного для типа данных в выражении. В этом случае говорят, что произошло переполнение результата. Рассмотрим, например, такой фрагмент программы:

bytea, b, result;

а = 127;

b = 127;

result = (byte)(a * b);

Здесь произведение значений а и b превышает диапазон представления значений типа byte. Следовательно, результат вычисления этого выражения вызвал переполнение для типа переменной result.

С# позволяет управлять генерированием исключений при возникновении переполнения с помощью ключевых слов checked и unchecked. Чтобы указать, что некоторое выражение должно быть проконтролировано на предмет переполнения, используйте ключевое слово checked. А чтобы проигнорировать переполнение, используйте ключевое слово unchecked. В последнем случае результат будет усечен так, чтобы его тип соответствовал типу-результату выражения.

Ключевое слово checked имеет две формы. Одна проверяет конкретное выражение и называется операторной checked-формой. Другая же проверяет блок инструкций.

<== предыдущая лекция | следующая лекция ==>
Нижний индекс не меньше верхнего | Overflow
Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 245; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.