Отправляет email-рассылки с помощью сервиса Sendsay

Visual Basic.NET. Уроки

  Все выпуски  

Visual Basic.NET. Уроки


Информационный Канал Subscribe.Ru

Уроки по C#. Рассылки сайта progs.biz  
Начало > VB.NET > Основы > Урок 45

Фленов М. Программирование в Delphi глазами хакера.
Фленов М. Программирование в Delphi глазами хакера.
Заказать на Озоне


Полные версии уроков (с картинками): урок 45.

Основы VB.NET
Урок 45. Конструкция Try...Catch...Finally

Конструкция Try...Catch...Finally предназначена для обработки ошибок. Например, в программе из-за неправильно введенных пользователем данных может произойти деление на ноль или чтение файла с дискеты может окончится неудачей, так как пользователь не вставил дискету и т. п.

Именно для корректной обработки таких ситуаций и предназначены исключения, которые в свою очередь используются в констукции Try...Catch...Finally.

Вот пример:

        Dim a, b, k As Integer
        Dim arr() As Int32 = {0, 1, 12, 4}

        Dim s As String
        ' Заключение потенциально опасного кода в Try...End Try.
        Try
            Console.Write("Enter number:")
            s = Console.ReadLine()
            ' Конвертируем в число
            ' (возможно безуспешно!)
            k = Convert.ToInt32(s)
            ' Читаем соответствующий элемент массива.
            ' (элемента с таким номером может не существовать!)
            a = arr(k)
            ' Делим (возможно на ноль!).
            b = 10 / a
            Console.WriteLine("b = {0}", b)
        Catch ex1 As IndexOutOfRangeException
            ' Если вышли за пределы массива.
            Console.WriteLine(ex1.Message)
        Catch ex2 As ArithmeticException
            ' Если арифметическая ошибка.
            Console.WriteLine("Arithmetic exeption: {0}", ex2.Message)
        Catch ex3 As Exception
            ' Если общая ошибка.
            Console.WriteLine("Generic exeption: {0}", ex3.Message)
        Finally
            ' Эта часть выполнится всегда.
            Console.WriteLine("***")
        End Try
    End Sub

Как вы видите, код, который может вызвать ошибку, идет сразу после Try (до ближайшего Catch). В нашем примере для кода возможен целый ряд ошибок - деление на ноль, выход за пределы массива, попытка перевести в число строку, не содержащую цифр. Для каждой из таких ситуаций мы определяем свое исключение (Catch), причем каждое исключение имеет свой тип (например мы пишем Catch ex1 As IndexOutOfRangeException для исключения, возникающего при выхобе за пределы массива). После каждого Catch'а мы пишем соответствующий обработчик, который будет выполнятся, естественно, при возникновении исключения. У нас обработчиками является вывод некого текста на консоль.

Обратите внимание, что важно, в каком порядке мы пишем наши исключения. Так, сначала мы пишем частные исключения (выход за пределы массива, например) и в самом конце - самое общее исключение (у него тип просто Exception). Если бы мы сначала написали общее исключение, то возникло бы оно, а специализированные - нет.

Результат выполнения нашей программы будет зависеть от того, что пользователь введет.

Если пользователь введет 0, то возникнет исключение ArithmeticException, если 1 - то никакого исключения не возникнет, если, например, 100, то IndexOutOfRangeException, а если вообще не число, а, скажем, "sdsds", то просто Exception.

Рассылки сайта progs.biz
Visual C++, MFC
C# и .NET
VB.NET
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX new!
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru


Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
2002-2004 сайт progs.biz
2002-2004 Алексеев Игорь

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.vblessons
Отписаться

В избранное