Почему ошибки в классах задерживаются только во время выполнения? - PullRequest
0 голосов
/ 03 декабря 2008

У меня есть класс VB6 с методом, который вызывает ошибку:

Public Sub DoSomething
  ...
  err.Raise 12345, description:="Error message"
  ...
End Sub

Этот метод вызывается из формы:

Public Sub ErrTest()
  On Error Goto err1
  obj.DoSomething
  Exit Sub
err1:
  MsgBox err.Description
End Sub

Это прекрасно работает во время выполнения, но во время разработки обработка ошибок не работает. Вместо этого в среде IDE VB6 отображается стандартное окно сообщения, откуда я могу перейти в режим отладки или завершить программу.

Почему это происходит? Могу ли я предотвратить это?

Ответы [ 2 ]

5 голосов
/ 03 декабря 2008

В VB IDE перейдите в Инструменты, Опция, вкладка Общие, Кадр перехвата ошибок. Я предполагаю, что вы установили «Break on All Errors», тогда как вы, вероятно, хотите «Break on Unhandled Errors».

Ваше утверждение Err.Raise дает мне ошибку компиляции; попробуйте снять брекеты.

Также вы можете использовать

Err.Raise vbObjectError + 12345, Description:="Error message"

т.е. смещение вашего кода ошибки из константы VB vbObjectError, чтобы убедиться, что вы не столкнетесь.

1 голос
/ 09 декабря 2008

Вы также можете изменить параметры перехвата ошибок, щелкнув правой кнопкой мыши в окне кода. Следующие опции доступны из подменю «Переключить»:

Перерыв на все ошибки
Перерыв в модуле класса
Перерыв на необработанные ошибки

Я считаю, что это намного проще, чем открывать диалоговое окно "Параметры" ...

...