我希望设计人员在调试时捕获错误,并希望用户在发生错误时看到我的友好消息。我知道我可以用以下内容来完成这个:
#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 :(得分: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)
在Try..Catch的catch部分中,您应该将异常消息,stacktrace以及您可能想要的任何内容写入日志文件 - 此外,您还可以将该数据写入Windows事件日志。
在最糟糕的情况下,你可以在Try..Catch块的Catch部分放置断点,因为你通常不应该击中它们,一旦设置就不应该是一个大问题。
答案 3 :(得分:0)
我注意到你从来没有在这里标记任何东西。你听说过面向方面编程吗?这实际上类似于我希望在一个新项目中实现的东西,所以我很好奇你是否做了其他任何事情。此外,这是一个为期一年的问题......你可能已经做了一些事情而没有跟进。
然后我突然意识到提问者已经关闭了他的帐户......
答案 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