c#——错误调试

c#语言包括结构化异常错误处理的语法。用3个关键字可以标记处能处理异常的代码和指令,如果发生异常,就使用这些指令处理异常。try,catch,finally。它们都有一个关联代码块,必须在连续的代码行中使用。如下:

try{……}

catch(<exceptionType>e){……}

finally{……}

也可以只用try和finally块,二没有catch块,或者有一个try和好几个catch。如果有一个或多个catch,finally就是可以选择的,否则就是必需的。这些代码块的用法如下:、

try——包括抛出异常的代码(在谈到异常时,其中的“抛出”在C#语言中也可以是“生成”或“导致”)。

catch——包括抛出异常时要执行的代码。catch可以使用<exceptionType>,设置为只响应特定的异常类型( 如System.IndexOutOfRangeException),以便提供多个catch。还可以完全省略这个参数,让一般的catch响应所以的异常。

finally——包括总是会执行的代码,如果没有产生异常,则在try之后执行,如果处理了异常,就在catch后执行,或者在未处理的异常上移到调用堆栈之前执行。“上移到调用堆栈”表示,SEH允许嵌套try……catch……finally,可以直接嵌套,也可以在try包含的函数调用中嵌套。例如:如果在被调用的函数中没有catch能处理某个异常,就由调用代码中的catch处理。如果始终没有匹配的catch,就终止应用程序。finally在此之前处理,是因为存在这个块,否则也可以在try……catch……finally结构的外部放置代码。这个嵌套功能能将在外面的“异常处理的注意事项”一节中进一步讨论,所以如果对这个功能感到迷惑,请不必担心。

在try的代码中出现异常后,发生的事件依次是:

try块在发生异常的地方中断程序执行。

如果有catch,就检查该块是否匹配已抛出的异常类型。如果没有catch,就执行finally(如果没有catch,就一定要有finally)。

如果没有catch,但它与已发生的异常类型,就执行它包括的代码,再执行finally(如果有)。

如果catch都不匹配已发生的异常类型,就执行finally(如果有)。

结果

 

 

 

posted on 2013-07-17 11:53  泷岛慧  阅读(206)  评论(0编辑  收藏  举报