异常处理的性能问题

MSDN:

异常处理

通常,错误条件都将作为常规流程控制使用。在此情况下,如果试图通过编程将用户添加到 Active Directory 实例中,则只能试着添加该用户,如果系统返回 E_ADS_OBJECT_EXISTS HRESULT,则说明它们已经存在于该目录中。此外,您也可以通过搜索目录查找该用户,如果搜索失败则只需添加该用户。

按照常规流程控制使用错误,在 CLR 环境中会降低性能。CLR 中的错误处理是借助结构化异常处理实现的。引发异常之前,托管异常的开销非常小。在 CLR 中,引发异常时,需要使用堆栈遍历为已引发的异常找到相应的异常处理程序。堆栈遍历是一种开销较大的操作。正如它的名称所表示的,异常应该用于异常或意外的情况。

  • 提示对于以性能为中心的方法,请考虑返回预期结果的枚举结果,而不是引发异常。

  • 提示有多种 .NET CLR 异常性能计数器都可以通知您在应用程序中引发了多少异常。

  • 提示如果您使用 VB.NET 的 use exceptions 而不是 On Error Goto,错误对象就是不必要的开销。

 

 

注:

程序编写的时候可以使用throw抛出异常,然后在合适的位置使用try catch(finally)处理异常。

但这个性能是底下的,在MSDN中找到了依据。以后的编程还是坚持尽量的使用返回(枚举)的结果会更好。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值