有没有更好的方法让visual studio在调试模式下忽略try / catch

时间:2009-05-21 14:40:58

标签: vb.net debugging ignore if-statement 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并让它们混乱我的代码。看起来这应该是一个共同的需求,必须有一个更好的方法。有谁知道更好的方法吗?

5 个答案:

答案 0 :(得分:16)

在VS.NET中,您可以说当一个异常抛出时,您是否希望调试器中断(不仅仅是在未处理的情况下)。

查看Debug |例外...菜单项(键盘快捷键上的Ctl-Alt-E)。选择你感兴趣的例外情况,然后勾选该例外的“抛出”框。

您可以在多个级别勾选该框(所有CLR异常,给定命名空间中的所有CLR异常或非常特定的异常)

答案 1 :(得分: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

答案 2 :(得分:0)

我注意到你从来没有在这里标记任何东西。你听说过面向方面编程吗?这实际上类似于我希望在一个新项目中实现的东西,所以我很好奇你是否做了其他任何事情。此外,这是一个为期一年的问题......你可能已经做了一些事情而没有跟进。

然后我突然意识到提问者已经关闭了他的帐户......

答案 3 :(得分:0)

在Try..Catch的catch部分中,您应该将异常消息,stacktrace以及您可能想要的任何内容写入日志文件 - 此外,您还可以将该数据写入Windows事件日志。

在最糟糕的情况下,你可以在Try..Catch块的Catch部分放置断点,因为你通常不应该击中它们,一旦设置就不应该是一个大问题。

答案 4 :(得分: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