异常处理的权衡

        这段时间一直在做教务系统的基础系统部分,经过了N多时间,我们的系统已经初见模型。

        按照软件工程的思想,我们一步步走下来,包括原型的设计、文档的编写等等内容,终于,前些天我们开始了代码的编写,其实,一旦开始编写代码,这个项目距离完成就接近了。

        由于我们是第一次系统的来完成一个项目,总是会出现这样和那样的问题。今天主要说说我们在异常处理方面的讨论。

        说到编写代码,不可避免的要考虑异常处理的问题,对于异常处理,我们的原则还是尽早发现,尽早处理。关于这个原则,以前只是当做原则,今天找到了一个理论依据。

        .net在产生异常时是逐步向外层查找处理程序的,就是说,如果当前函数中没有对异常进行处理,才查找调用当前函数的那一个函数,一直找遍整个应用程序。如果还没有,就交给runtime。

        单从性能方面考虑,越早发现问题,对于我们的系统的性能影响越小。

        关于这一点,我们大家都没有什么异议。但在关于Try,Catch语句的使用上就出现了分歧。具体我们是如何产生分歧的,现在记不太清楚了,最后,我们的落脚点落在了使用Try,Catch对系统性能是否会产生很大影响?

        当然,我们所有的观点都是建立在必须处理错误的基础上的,现在问题已经转变为trycatch处理对系统性能的影响。

网上大家的观点也是各不相同:

        1、http://www.cnblogs.com/wlb/archive/2009/11/30/1613412.html

            这位朋友认为,使用trycatch处理异常不会对系统性能造成影响。他给出了测试例子以及测试结果。

        2、http://wenku.baidu.com/view/904033156edb6f1aff001f7c.html

            这位朋友的观点是,trycatch对系统性能的影响是有的,尤其是第一次发生异常的时候,会对性能造成比较大的影响。而主要的消耗是发生在Catch部分。

        3、还有很多人认为,trycatch对系统性能有很大影响。看到很多人说,但是没有发现一篇具体分析的文章。

        最后,基于以上及很多没有给出的文章,我认为要使用tryCatch进行异常处理。

            首先,还是那个原则:尽早发现,尽早处理。

            第二,要尽量给CLR一个明确的异常信息,不要使用Exception去过滤异常。

            第三,尽量不要将try…catch写在循环中。

            第四,try尽量少的代码,如果有必要可以使用多个catch块,并且将最有可能抛出的异常类型,书写在距离try最近的位置。

            第五,不要只声明一个Exception对象,而不去处理它。

 

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值