you*_*hut 0 .net vb.net exception-handling
我有一个方法如下:
Public Sub Send()
Dim caughtException As Exception = Nothing
Try
//Attempt action.
Catch ex As Exception //Custom exceptions which can be thrown all inherit from Exception.
//Instantiate error object to be logged.
caughtException = ex
End Try
//Log action and if there is an error log this too.
If caughtException IsNot Nothing Then Throw caughtException
End Sub
Run Code Online (Sandbox Code Playgroud)
我必须记录报告的错误,在研究之后,重新抛出异常是正确的做法.我关心的是保存堆栈信息.
为了保持代码DRY,我将操作记录在一个地方 - 在捕获异常之后.
此功能最终通过WCF公开.
最好登录处理程序然后从那里抛出.另外,你会从原始异常中丢失堆栈和其他细节.
Catch ex As Exception
LogException (ex)
Throw
Run Code Online (Sandbox Code Playgroud)
此外,当通过WCF公开功能时,如果您有需要使用WCF故障传输它们的自定义异常,则应确保客户端上的异常代码可用.
如果消费者不是.net,那么这非常重要,您需要公开包含将由客户端解码的问题的详细信息的FaultContracts.有关详细信息,请参阅此处:客户端的WCF Web服务自定义异常错误