Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Смена режима обработки ошибки Добавлено: 22.08.08 20:36  

Автор вопроса:  Wolf4D | Web-сайт: www.madnesstudio.ru
Наверное, кто-то из здешних обитателей сталкивался с подобными вещами:
Имеется подпрограмма, в самом начале её кода задаётся режим обработки ошибок (не знаю даже, как это назвать по научному, но вот пример):
Sub nextb_Click()
On Error GoTo FinaliseError
<куча кода>
Exit Sub
FinaliseError:
<куча кода>
End sub

А теперь мне вздумалось пропускать ошибки (а они по логике программы не обязаны, но в 90% случаев должны возникать) в этой самой подпрограмме в коде после метки!
То есть:
Sub nextb_Click()
On Error GoTo FinaliseError
<куча кода>
Exit Sub
FinaliseError:
On Error Resume Next
<куча кода>
End sub

Но тут уже, встретив ошибку, компилятор ругается на неё по всей форме, не думая пропускать... Конечно, можно сделать вызов после этой метки ещё одной подпрограммы, куда и запихнуть строптивый код. Но нет ли способа попроще?
Ах, да. VB6.

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #1 Добавлено: 23.08.08 21:14
on error goto 0

Ответить

Номер ответа: 2
Автор ответа:
 Wolf4D



Вопросов: 20
Ответов: 131
 Web-сайт: www.madnesstudio.ru
 Профиль | | #2
Добавлено: 24.08.08 15:05
Спасибо, но нужен всё-таки пропуск ошибок, а не увод программы в неведомо куда (а, судя по всему, goto 0 это и делает - как-то уже не хочется ломать то, что заработало для проверки).
Уже вставил тот код в отдельный Sub. На том и порешил проблему.
Но всё равно спасибо.

Ответить

Номер ответа: 3
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #3
Добавлено: 24.08.08 16:29
<imho> если ошибка есть, то программист должен хотя бы знать о ней </imho>

Ответить

Номер ответа: 4
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #4
Добавлено: 24.08.08 23:01
On Error GoTo / On Error Resume действует до выхода из процедуры, а не до следующего встретившегося On Error

Ответить

Номер ответа: 5
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #5 Добавлено: 25.08.08 19:04
On Error GoTo 0 это не "увод вникуда", а отключение обработки ошибок - если произойдет ошибка то ее обработает отладчик (если запускаешь под отладчиком) или будет падение программы.

Вот вобщем, а вообще в VB 6.0 "обработка ошибок" присутствует чисто формально и как правило используется так:

Sub Hel ()
    On Error Resume Next
    ' тут код
End Sub

Поэтому и переходим на VB .NET 9.0

Ответить

Номер ответа: 6
Автор ответа:
 Wolf4D



Вопросов: 20
Ответов: 131
 Web-сайт: www.madnesstudio.ru
 Профиль | | #6
Добавлено: 25.08.08 19:23
><imho> если ошибка есть, то программист должен хотя бы знать о ней </imho>

У меня просто это очень хитрая процедура работы с директориями. Если ошибка возникает - значит, директории нет! И идём на метку, там всё делаем... но и там могут быть затруднения...

>On Error GoTo 0 это не "увод вникуда", а отключение обработки ошибок - если произойдет ошибка то ее обработает отладчик (если запускаешь под отладчиком) или будет падение программы.

Это отключение обработки ошибок вообще? Спасибо...

Ответить

Номер ответа: 7
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #7 Добавлено: 26.08.08 03:15
ну типо..
код..
...
On Error Resume Next
код...
on error goto vnikuda
код..
.. а потом бац.. и убрали все обработчики установленные ранее.
on error goto 0
далее прога будет падать, если не задать новый обработчик.

Ответить

Номер ответа: 8
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #8 Добавлено: 26.08.08 03:17
On Error GoTo / On Error Resume действует до выхода из процедуры, а не до следующего встретившегося On Error
Именно через on error goto 0 можно сделать "следующий On Error GoTo"...

Ответить

Номер ответа: 9
Автор ответа:
 Wolf4D



Вопросов: 20
Ответов: 131
 Web-сайт: www.madnesstudio.ru
 Профиль | | #9
Добавлено: 26.08.08 14:39
Именно через on error goto 0 можно сделать "следующий On Error GoTo"...

Ага... Всё становится на свои места. Спасибо, теперь всё более-менее понятно.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам