Основы программирования — второй семестр 08-09; Михалкович С.С.; VII часть — различия между версиями

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск
(Иерархия исключений в .NET)
(Секции обработки исключений в блоке 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;

Вопрос: надо ли обрабатывать все возникшие исключения?
Ответ: надо обрабатывать только те, которые понятно, как обрабатывать в данном месте программы. Остальные — не обрабатывать, а считать, что это должен сделать вызывающий код.

Создание индивидуального класса исключения. Генерация исключений при обработке исключений