Ste*_*fan 13 vb.net web-services exception-handling exception
在webservice中,我看到了这段代码:
<WebMethod()> _
Public Function dosomething() As Boolean
Try
If successful Then
Return True
Else
Return False
End If
Catch ex As Exception
Throw ex
End Try
End Function
Run Code Online (Sandbox Code Playgroud)
捕获异常并再次抛出异常有什么意义?我错过了什么吗?
编辑:谢谢你的回答!我认为这是类似的东西,但不确定我是否能够/将重构那些没有任何影响的人.
GEO*_*HET 44
不要这样做.
如果你确实需要重新抛出异常,只是用throw;使用throw ex;擦除堆栈跟踪,是绝对错误的.
Jac*_*yan 14
我认为没有理由为功能做这件事.但是,如果之前存在一些已删除的错误处理(通常是日志记录),并且开发人员删除了日志处理但未重构代码以删除冗余的try/catch,则可能会出现这种情况.
可能是调试遗留下来的一些代码(你在throw上设置一个断点,这样你就可以检查调试器中的异常).如果我想记录异常然后将其传递给链,我可能会做类似这样的事情,尽管我可能将异常包装在另一个具有更有意义(对我的应用程序)错误消息的异常中.
我可以看到它所使用的架构(设计模式)之一是处理事务的地方。该函数完成其工作,失败,catch 块将事务完成到已知状态(通常是回滚),然后抛出用户定义的异常。
按照现在的情况,将该代码重构为更理智的状态。