加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

.net – 尝试捕捉仍然有用吗?

发布时间:2020-12-15 20:27:23 所属栏目:asp.Net 来源:网络整理
导读:当我第一次开始在.NET中编程时,我一直使用try / catch.尽管我很少使用它们用于Web应用程序,但我最近发现.我的例外(没有双关意图)是非托管代码,可能会创建内存泄漏,如com对象.他们真的需要了吗,还是把事情搞砸了? 更新:假定使用自定义错误来处理丑陋的堆栈
当我第一次开始在.NET中编程时,我一直使用try / catch.尽管我很少使用它们用于Web应用程序,但我最近发现.我的例外(没有双关意图)是非托管代码,可能会创建内存泄漏,如com对象.他们真的需要了吗,还是把事情搞砸了?

更新:假定使用自定义错误来处理丑陋的堆栈跟踪页面.

解决方法

我发现初级程序员使用try / catch WAY太重.使用try / catch的决定应该归结为这些简单的规则:

>你能处理错误吗? (也许这意味着再试一次,或使用不同的设置,返回替代值等)
>你能提供一个更好的错误信息(更多细节)?
>你需要记录这个具体的错误吗? (请注意,所有错误都应该记录在最高级别 – 例如Application_Error方法中的global.asax文件中)
>您需要清理/处理操作中使用的资源,例如数据库连接或事务?

如果您对其中任何一个回答“是”,那么请确保使用try / catch.如果你说不,那么你可以安全地允许一个错误页面显示出来,让全局错误处理程序记录它.

如果您打算记录或清理资源,但仍然让异常通过,请确保使用throw;而不是创造一个全新的例外.这样做会消除你的堆栈跟踪,基本上给出错误没有上下文.

刚刚发现this excellent quote从Ayende似乎把它非常好:

Exception handling should appear in
exactly two places:

  • When an error is expected (making a web request call,for example) and
    there is some meaningful behavior to
    be done in the case of a failure (such
    as retrying after some delay)
  • On a system boundary,in which case you need to make a decision about how you are going to expose the error to the outside world.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读