当前位置:  开发笔记 > 数据库 > 正文

为什么只是再次抛出一个异常?

如何解决《为什么只是再次抛出一个异常?》经验,为你挑选了3个好方法。

在webservice中,我看到了这段代码:

 _
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

捕获异常并再次抛出异常有什么意义?我错过了什么吗?

编辑:谢谢你的回答!我认为这是类似的东西,但不确定我是否能够/将重构那些没有任何影响的人.



1> GEOCHET..:

不要这样做.

如果你确实需要重新抛出异常,只是用throw;使用throw ex;擦除堆栈跟踪,是绝对错误的.


将我自己的语义添加到异常中.防爆.我得到一个SqlException,因为我尝试插入一个具有重复主键的行.在我的方法中,我知道插入了什么类型的对象和键值.我可以写一个更好的异常消息,但仍保留所有信息.

2> Jack Ryan..:

我认为没有理由为功能做这件事.但是,如果之前存在一些已删除的错误处理(通常是日志记录),并且开发人员删除了日志处理但未重构代码以删除冗余的try/catch,则可能会出现这种情况.



3> tvanfosson..:

可能是调试遗留下来的一些代码(你在throw上设置一个断点,这样你就可以检查调试器中的异常).如果我想记录异常然后将其传递给链,我可能会做类似这样的事情,尽管我可能将异常包装在另一个具有更有意义(对我的应用程序)错误消息的异常中.

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有