Есть ли лучший способ заставить Visual Studio игнорировать try / catch в режиме отладки - PullRequest
5 голосов
/ 21 мая 2009

Я хочу, чтобы дизайнер отлавливал ошибку при отладке, и я хочу, чтобы пользователь видел мое дружеское сообщение, если для них происходит ошибка. Я знаю, что могу сделать следующее:

#If Debug=False Then

Try

#End If

'some code here

#If Debug=False Then

Catch ex as exception

    Messagebox.Show("Errors suck")

End Try

#End If

Я не хочу писать все # заявления и чтобы они загромождали мой код. Кажется, это должно быть общей потребностью, и должен быть лучший путь. Кто-нибудь знает лучший способ?

Ответы [ 5 ]

16 голосов
/ 21 мая 2009

В VS.NET вы можете сказать, хотите ли вы, чтобы отладчик ломался, когда исключение выброшено (не только когда оно не обработано).

Посмотрите на Отладку | Исключения ... пункт меню (Ctl-Alt-E на моих сочетаниях клавиш). Выберите интересующее вас исключение, а затем отметьте «брошенное» поле для этого исключения.

Вы можете установить этот флажок на нескольких уровнях (все исключения CLR, все исключения CLR в заданном пространстве имен или очень конкретные исключения)

3 голосов
/ 21 мая 2009

Нет хорошего способа игнорировать попытку, кроме того, что вы сделали. Но вы можете сделать код немного чище и получить тот же эффект. По сути, вы пытаетесь предотвратить запуск действия в блоке catch. Лучший способ сделать это - условно скомпилированный метод.

Try
... 
Catch ex As Exception
  DebugLog(ex)
  Throw
End Try

<Condition("DEBUG)> _
Public Sub DebugLog(ByVal ex As Exception) 
  Messagebox.Show("errors suck")
End Sub
0 голосов
/ 08 сентября 2015

Вот как я это делаю:

Включено:

Try ' : Catch: End Try
  doSomething
  andSomeMore
  etcEtc
' Try
Catch ex As Exception
  handleException
End Try

Отключите вышеуказанное, удалив два символа комментария:

Try : Catch : End Try
  doSomething
  andSomeMore
  etcEtc
Try
Catch ex As Exception
  handleException
End Try
0 голосов
/ 18 августа 2010

Я заметил, что вы никогда не отмечали что-либо как принятое здесь. Вы слышали об аспектно-ориентированном программировании? На самом деле это похоже на то, что я хочу реализовать в новом проекте, поэтому мне было любопытно, если бы вы сделали что-то еще с этим. К тому же, это вопрос годовалого возраста ... возможно, вы что-то сделали и не смогли продолжить.

А потом до меня доходит, что, похоже, аскер закрыл свой аккаунт ...

0 голосов
/ 21 мая 2009

В секции catch вашего Try..Catch вы должны записать сообщение об исключении, трассировку стека и все, что вам может понадобиться, в файл журнала - кроме того, вы можете также записать эти данные в журнал событий Windows.

В худшем случае вы могли бы просто поставить точки останова в секции Catch ваших блоков Try..Catch, так как обычно вы не должны бить их, это не должно быть большой проблемой после установки.

...