|
Обработка исключений
|
|||
---|---|---|---|
#18+
Здравствуйте. Сразу оговорюсь, я с вижлбейсиком раньше почти не сталкивался, но вот пришлось.. Порылся в интернете и такое впечатление, что нету в нём толковой обработки ошибок!! То есть всё, что нашёл - это или Код: plaintext 1. 2. 3. 4. 5. 6.
Код: plaintext 1.
Но вот у меня задача в цикле выполнять определённые действия и при ошибке записывать эту ошибку, а если всё ок, то записывать результат выполнения функции. Так вот, я не возьму в толк, как при такой обработке ошибок быть? Если оставить метку вне цикла, то при ошибке из цикла вылетает естественно, но нужно, чтобы цикл работал дальше. Если использую Resume Next, то цикл отрабатывает, но обработки ошибок не происходит. Заранее скажу, что всех возможных кодов ошибок я не знаю и хотелось бы повесить один обработчик на любую возможную ошибку. Как быть подскажите пожалуйста? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 15:28 |
|
Обработка исключений
|
|||
---|---|---|---|
#18+
хм...разве что при ошибке посылать к метке вне цикла, там выполнять нужные действия, а потом посылать к метке в самом конце цикла... Но кажется будто это как-то через одно место)) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 15:32 |
|
Обработка исключений
|
|||
---|---|---|---|
#18+
EmilRegisЕсли использую Resume Next, то цикл отрабатывает, но обработки ошибок не происходит. В вашем случае логичнее использовать первый вариант, а почему "обработки ошибок не происходит" мы без приведения вашего кода не угадаем. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 15:43 |
|
Обработка исключений
|
|||
---|---|---|---|
#18+
Shocker.ProEmilRegisЕсли использую Resume Next, то цикл отрабатывает, но обработки ошибок не происходит. В вашем случае логичнее использовать первый вариант, а почему "обработки ошибок не происходит" мы без приведения вашего кода не угадаем. Надо помнить, что Err.Number нужно анализировать СРАЗУ после возможной строки с ошибкой, иначе последующие выполняемые операции без ошибок сбрасывают его в 0 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 15:44 |
|
Обработка исключений
|
|||
---|---|---|---|
#18+
ну вот примерный код Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Select Case Err.Number End Select но тут надо знать всевозможные коды ошибок. А мне надо один обработчик на все возможные ошибки повесить. Если использовать Resume Next без Err.Number, то ошибка просто пролетает и переходит к очередной итерации цикла ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 15:49 |
|
Обработка исключений
|
|||
---|---|---|---|
#18+
кстати в приведённом примере несмотря на обработчик, который я повесил, исключение вылетает на строчке ResultSet = Statement.executeQuery(oCell.String) если туда передаётся sql процедура с ошибочным числом параметров ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 15:51 |
|
Обработка исключений
|
|||
---|---|---|---|
#18+
EmilRegisно тут надо знать всевозможные коды ошибок. Зачем? Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 15:53 |
|
Обработка исключений
|
|||
---|---|---|---|
#18+
EmilRegisну вот примерный код Код неверный, потому что возврат из обработчика ошибок должен осуществляться командой Resume, а не Goto ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 15:54 |
|
Обработка исключений
|
|||
---|---|---|---|
#18+
EmilRegis в VB Tools-Option-General для обработчика ошибки выбери последнее может поможет при вызове sql ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 15:59 |
|
Обработка исключений
|
|||
---|---|---|---|
#18+
ага,спасибо добрые люди) попробую) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 16:06 |
|
Обработка исключений
|
|||
---|---|---|---|
#18+
я бы как-то так сделал Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 16:08 |
|
Обработка исключений
|
|||
---|---|---|---|
#18+
EmilRegisНо вот у меня задача в цикле выполнять определённые действия и при ошибке записывать эту ошибку, а если всё ок, то записывать результат выполнения функции. В подобных случаях я поступал так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 16:08 |
|
Обработка исключений
|
|||
---|---|---|---|
#18+
Shocker.ProShocker.Proпропущено... В вашем случае логичнее использовать первый вариант, а почему "обработки ошибок не происходит" мы без приведения вашего кода не угадаем. Надо помнить, что Err.Number нужно анализировать СРАЗУ после возможной строки с ошибкой, иначе последующие выполняемые операции без ошибок сбрасывают его в 0 Откуда эта деза? Сбрасывает только err.clear или другой on error. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 16:31 |
|
Обработка исключений
|
|||
---|---|---|---|
#18+
Shocker.Proя бы как-то так сделалМало. До цикла происходит куча объектных вызовов, любой из которых теоретически может завершиться ошибкой. В начале нужно on error goto. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 16:34 |
|
Обработка исключений
|
|||
---|---|---|---|
#18+
AntonariyShocker.Proя бы как-то так сделалМало. До цикла происходит куча объектных вызовов, любой из которых теоретически может завершиться ошибкой. В начале нужно on error goto. Я дорабатывал код автора. Его код предполагает ошибку на выполнении запроса - ее я и отследил. Остальное сам додумает, после тех ошибок резюмирование явно не требуется, так как ошибки будут фатальными. Насчет сброса кода ошибки... возможно я спутал с кое-чем еще. Проверять лень, верю на слово. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 17:01 |
|
|
start [/forum/topic.php?fid=60&gotonew=1&tid=2158851]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
9ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 165ms |
0 / 0 |