Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 | 2 |

 

  Вопрос: Работа с реестром Добавлено: 26.02.10 09:50  

Автор вопроса:  Jasmin

Ответить

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

Номер ответа: 16
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #16 Добавлено: 27.02.10 14:25
Sub()
On Error GoTo Err1
оператор1
On Error GoTo Err2
оператор2
On Error GoTo 0
Exit Sub
Err1:
оператор3
Resume
Err2:
оператор4
Resume Next
End Sub

Ответить

Номер ответа: 17
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #17 Добавлено: 01.03.10 17:08
Догадываюсь, что так. :-) Спасибо. Создала код.

Ответить

Номер ответа: 18
Автор ответа:
 GDK



Вопросов: 13
Ответов: 348
 Профиль | | #18 Добавлено: 03.03.10 14:53
On error resume next будет пропускать все операторы с ошибками
ДО ТЕХ ПОР ПОКА НЕ ВСТРЕТИТСЯ on error goto 0.

Я раньше старался не пользоваться on error-ами. А зря. Например надо закрыть вордовский документ. Eсть переменная D as word.document. Пишем типа D.Close(...). Если D пустая или уже вручную закрыта пользователем будет ошибка. Надо перед закрытием проверить что она не пустая и что не закрыта. Есть более простой путь:

On Error Resume next
  ;D.close()
On Error GOTO 0

А вот типа

On Error GoTo Err1
оператор1
On Error GoTo Err2

стараюсь не использовать. Не удобно это и запутаться можно. Если возникает такая надобность, стараюсь разделить процедуру на несколько процедур и использовать On error resume next в каждой.

И ещё. Аккуратнее с обработкой ошибок в цыклах. Где то это здесь уже было. В таких случаях лучше тело цыкла сделать в виде отдельной привате ф-ции, в которой будет обработка ошибок. Меньше проблемм будет.

Ответить

Номер ответа: 19
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #19 Добавлено: 03.03.10 19:35
Ооо, спасибо за разъяснения. Может теперь больше сдружусь с этим оператором. :-)

Ответить

Номер ответа: 20
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #20
Добавлено: 05.03.10 00:49
Обработка ошибок без грубого нарушения принципов структурного программирования и с точки зрения читабельности кода нормально смотрится только в маленьких процедурах-функциях, т.е. есть смысл раздробить большую подпрограмму на мелкие с обработчиками где нужно и что нужно. То же самое касается пропуска ошибок в отрезке подпрограммы типа On Error Resume Next, хотя на моей памяти в VBA бывают ситуации, где и это не позволяет сбросить ошибки. В основном необрабатываемые ошибки приложения - application defined error(s)

Ответить

Номер ответа: 21
Автор ответа:
 GDK



Вопросов: 13
Ответов: 348
 Профиль | | #21 Добавлено: 05.03.10 10:29
Ну да. Для удобства надо правильно продумывать структуру программы - дробить её на нужные ф-ции, а не всё в одну процедуру запихивать. А ещё лучше использовать модули классов. Я в последнее время стандартные модули почти не использую и удобство чувствуется довольно сильно.

Ответить

Номер ответа: 22
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #22 Добавлено: 05.03.10 17:57
Полностью согласна с обоими.

P. S. Структуру получается обдумывать автоматически. Сама не знаю как. Но получается. (смущаюсь) Никогда в одну процедуру все не запихиваю. :-)

Ответить

Страница: 1 | 2 |

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



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