6

我希望设计人员在我调试时捕捉到错误,并且我希望用户在他们发生错误时看到我的友好消息。我知道我可以通过以下方式完成此操作:

#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 并让它们弄乱我的代码。看起来这应该是一个共同的需求,并且必须有更好的方法。有谁知道更好的方法?

4

4 回答 4

16

在 VS.NET 中,您可以说是否希望调试器在抛出异常时中断(而不仅仅是在未处理时)。

查看调试 | 例外...菜单项(我的键盘快捷键上的 Ctl-Alt-E)。选择您感兴趣的异常,然后勾选该异常的“抛出”框。

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

于 2009-05-21T14:45:08.340 回答
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
于 2009-05-21T14:46:17.513 回答
0

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

在最坏的情况下,您可以在 Try..Catch 块的 Catch 部分放置断点,因为您通常不应该碰到它们,一旦设置它就不应该有什么大不了的。

于 2009-05-21T14:44:52.087 回答
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
于 2015-09-07T22:51:54.507 回答