2009-05-21 2 views
5

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

#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 

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

+0

Удалось ли вам решить эту проблему? Вам все еще нужна помощь? – jcolebrand

ответ

0

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

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

15

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

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

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

3

Там нет хорошего способа, чтобы заставить его игнорировать попробовать поймать, кроме того, что ты сделал. Но вы можете сделать код немного чище и существенно получить тот же эффект. Вы по существу пытаетесь предотвратить действие в блоке 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

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

А потом меня осенило, что это выглядит как Аскер закрыл его счет ...

0

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

Включено:

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