异常捕获的顺序?

时间:2010-12-08 13:15:34

标签: .net exception-handling

假设我有一个像UnauthorizedAccessException这样的系统异常以及我自己编写的异常。是否有必须使用的特定订单才能捕获异常?我想它仍然是从最具体到最不具体的?

谢谢:)

3 个答案:

答案 0 :(得分:16)

它们按照写入的顺序捕获,因此首先将最具体的(就异常类型之间的继承而言)。

因为 type 很重要(和继承层次结构);如果两者没有继承关系(即YourFunkyException不直接或间接地从UnauthorizedAccessException继承),则无关紧要。

答案 1 :(得分:1)

是的,首先捕获像您这样的“自定义”异常,让catch (Exception ex)最后捕获所有其他类型。

答案 2 :(得分:-2)

首先应该捕获基本的系统级异常,然后知道那些系统级异常的包装器(或继承者)的异常。然后是你的自定义异常..订单只是为了你可以捕获错误的根本原因而不是捕获更高的东西而不知道什么是根异常。

对我来说,我通常不会捕获任何异常..允许系统出错,查看堆栈跟踪以查找异常似乎已经冒出的顺序并按顺序捕获它们。

- 更新 假设这样的话,我做了这个答案..

尝试阻止{

// 1。文件IO操作可以通过系统异常

// 2。 Web服务访问或可能引发自定义异常的内容

} catch(第一个可能的系统异常) {} catch(第二次抓住你的自定义异常) {} catch(Exception ex){ //抓住所有}

顺序(就像另一个人说的那样)..可以看作是代码语句的顺序。

相关问题