Try-Catch-Finally

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

ism
Постоялец
Постоялец
 
Сообщения: 337
Зарегистрирован: 12.12.2001 (Ср) 12:59
Откуда: Russia, Saint-Petersburg

Try-Catch-Finally

Сообщение ism » 02.08.2005 (Вт) 1:13

Почему появляются оба сообщения? Finally должен выполняться только в случае если исключений не происходило.
Код: Выделить всё
        Dim a,b,c As Integer

        a = 10
        b = 0
        Try
            c = a / b
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        Finally
            MessageBox.Show("Ошибок не произошло")
        End Try

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 02.08.2005 (Вт) 1:25

Юзай Exit Try 8)

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 02.08.2005 (Вт) 1:38

Finally - Выполняется всегда!!!!!!
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

ism
Постоялец
Постоялец
 
Сообщения: 337
Зарегистрирован: 12.12.2001 (Ср) 12:59
Откуда: Russia, Saint-Petersburg

Сообщение ism » 02.08.2005 (Вт) 1:44

Если всегда, то для чего он, почему бы тогда не написать End Try, все что за ним всеравно выполнится?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.08.2005 (Вт) 3:28

Если должен выполняться только в случае если исключений не происходило, то помести эту строчку сразу перед первым Catch.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 02.08.2005 (Вт) 8:38

ism писал(а):Если всегда, то для чего он, почему бы тогда не написать End Try, все что за ним всеравно выполнится?


-Exit Sub (function,do.. etc)
-Exception in Catch section
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 02.08.2005 (Вт) 17:29

Finally выполняется всегда, несмотря ни на что. Даже если есть Exit Sub, Exit Try или Return. Или в случае, когда исключение происходит уже в блоке Catch.

Очень удобно когда надо иметь единственную точку выхода из процедуры. При этом можно вообще весь код поместить в блок Try ... Finally ... End Try
Весь мир матрица, а мы в нем потоки байтов!

Ronin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 635
Зарегистрирован: 13.02.2002 (Ср) 14:16
Откуда: Россия, Москва

Сообщение Ronin » 03.08.2005 (Ср) 20:32

Посмотри статьи....
С уважением,
Игорь Шувалов aka Ronin


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

    TopList