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中找到了依据。以后的编程还是坚持尽量的使用返回(枚举)的结果会更好。