关于.NET Exception的重新认识

关于这个话题,我想可以从两个角度来理解,第一,因为Exception可以自己定义,也可以自己New出instance来,所以Exception可以用来处理业务逻辑异常,举个例子,添加用户AddUser, 可能出现的异常业务逻辑包括名字冲突或者是某属性定义上含有非法字符,这种时候,可以自定义Exception来处理,在底层上new出intance,然后throw上来,在UI上Catch住,进行处理。

第二,就是系统级别的异常,比如类型转换的时候,可以用.NET的系统异常来捕获。

对.NET Exception中提到的对C/C++中异常处理的改进,一直以为返回值多数是focus on业务逻辑的,实际上,.NET Framework中提到的,主要是针对系统级别的异常,而非业务逻辑。

但是,Exception的效率到底慢到什么程度呢?今天做了一个试验,同样的DLL包装的功能函数,一种用返回值处理业务逻辑异常,一种用Exception来处理,当这个函数被调用100万次的时候,效率的差距是,返回值操作比异常处理快了300多倍。

由此的经验是,业务逻辑这样的异常,完全可以避免,那么就避免使用。也许下次项目的时候,Exception就不会出现在代码中了。其实想想,做一百万次才只有300倍,也就无所谓了。呵呵!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值