Gor*_*oro 2 .net vb.net exception-handling
捕获异常然后抛出另一个异常是一个好主意吗?
像这样:
Try
' Do operation xxx
Catch ex As Exception
' Operation xxx failed, need to execute cleanup
' But now I've caught this exception outside of my main control logic,
' so I would like to re-throw it
Throw New ApplicationException("XXX failed")
End Try
Run Code Online (Sandbox Code Playgroud)
这样做的原因是,当我在更高级别的逻辑上捕获异常时(为了确保我可以正确记录它),我需要在异常情况下执行一些操作,我只能在我的类/函数中执行.
你能想出为什么这会是一个坏主意的原因/场景吗?
Joh*_*ers 10
是的,这是一个坏主意.
首先,不要捕获异常以执行清理.使用Finally块,因为无论是否发生异常都将执行.你也不需要抛出一个新的例外只是为了说"XXX失败".堆栈跟踪将显示.
其次,不要使用ApplicationException.微软曾经建议用户定义的异常来自ApplicationException,但结果却是一个坏主意.他们现在建议我们使用Exception.
最后,当您因为旧的异常而抛出新异常时,请务必包含旧异常:
Throw New Exception("My new message", ex)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2600 次 |
| 最近记录: |