Основы программирования — второй семестр 08-09; Михалкович С.С.; VII часть — различия между версиями
Juliet (обсуждение | вклад) (→Иерархия исключений в .NET) |
Juliet (обсуждение | вклад) (→Секции обработки исключений в блоке try) |
||
Строка 36: | Строка 36: | ||
=== Секции обработки исключений в блоке try === | === Секции обработки исключений в блоке try === | ||
+ | Полный синтаксис блока <tt>'''try'''</tt> выглядит так: | ||
+ | '''try''' | ||
+ | ... | ||
+ | '''except''' | ||
+ | '''on''' e: Exception<sub>1</sub> '''do''' | ||
+ | <оператор>; | ||
+ | '''on''' e: Exception<sub>2</sub> '''do''' | ||
+ | <оператор>; | ||
+ | ... | ||
+ | ['''else''' <оператор>] | ||
+ | '''end'''; | ||
+ | |||
+ | ''Вопрос:'' надо ли обрабатывать все возникшие исключения? <br /> | ||
+ | ''Ответ:'' надо обрабатывать только те, которые понятно, как обрабатывать в данном месте программы. Остальные — не обрабатывать, а считать, что это должен сделать вызывающий код. | ||
=== Создание индивидуального класса исключения. Генерация исключений при обработке исключений === | === Создание индивидуального класса исключения. Генерация исключений при обработке исключений === |
Версия 09:45, 21 мая 2009
Содержание
Исключения
Введение. Что нам уже известно об исключениях
Впервые мы столкнулись с исключениями в начале курса, когда изучали оператор ввода и обработку ошибок ввода с помощью блока try..except.
Позже, при работе с файлами, возник термин «исключение». Мы узнали, как обрабатывать исключения с помощью оператора try..except и познакомились с оператором try..finally.
И, наконец, мы научились генерировать собственные исключения.
Теперь пришло время подробнее изучить исключения.
Иерархия исключений в .NET
Стандартные исключения связаны отношением наследования. Базовым классом для всех исключений является класс Exception, который находится в пространстве имен System.
<xh4> Классы исключений в .NET </xh4> Требуется подключить пространство имен System.
Exception ApplicationException Все пользовательские исключения SystemException AccessViolationException (несанкционированный доступ к памяти) ArgumentException ArgumentNullException ArgumentOutOfRangeException ArithmeticException DivideByZeroException (целочисленное деление на 0) IndexOutOfRangeException InvalidCastException (явное приведение к неправильному типу) FormatException NullReferenceException OutOfMemoryException StackOverflowException KeyNotFoundException (пространство имен System.Collections.Generic) IOException (пространство имен System.IO) FileNotFoundException EndOfStreamException
Секции обработки исключений в блоке try
Полный синтаксис блока try выглядит так:
try ... except on e: Exception1 do <оператор>; on e: Exception2 do <оператор>; ... [else <оператор>] end;
Вопрос: надо ли обрабатывать все возникшие исключения?
Ответ: надо обрабатывать только те, которые понятно, как обрабатывать в данном месте программы. Остальные — не обрабатывать, а считать, что это должен сделать вызывающий код.