C#中当在try语句块中抛出异常后,程序最后是否回到try块中继续执行后面的语句?

C#中当在try语句块中抛出异常后,程序最后是否回到try块中继续执行后面的语句?,第1张

try

{

    throw new Exception()

    var a = 1

}

catch

{

    var b = 1

}

var c = 1

不会的,如果程序抛出异常,然后会检测调用链,直到有 try 语句,匹配 catch 被捕获,然后执行 catch 语句块,如果直到顶层都没被捕获,则程序异常结束。

这里执行到throw new Exception(),然后抛出异链毁卖常。var a = 1 代码则不会被执行,棚逗异常被catch 捕获,接下来则执行余橡var b = 1 然后则是var c = 1, 然后继续往下执行。

抛出异常是java中一个程序处理动作。

如果一个方法没有捕获可能引发的异常,调用该方法的其他方法应该捕获并处理异常。

为了明确指出一个方法不捕获某类异常,而让调用该方法含喊的其他方法捕缺基获该异常,可以在定义方法的时候,使用throws可选项,用以抛出该类异常。

抛出异常是为了在程序运行错误的情况下,程序也能继续执行下面的代码,而不会跳出这个的程序运行,异常可以是专门写的方法,也可以是用户自定义谈扮野的异常情况,就是一般方法中异常的处理。

一般如果出现非人为异常,即非通过代码throw的方式抛出异常,同时未通过try-catch捕捉。则当前代码不会继续执行,而是向上抛出异常,即返回调用当前代码的位置。如果该位置未对异常进行处理,则继续向上抛出。

通过try-catch捕捉异常,即异常代码在try中,可以在catch中进行异常处理

try{

    ...

    //代码,产生异常

}catch(Exception e){//e是异常类型,一般根父类为Exception类

    ...

    //进行产生异常后的处理

}finally{

   局谨 ...

    //无论握银如何都会执行的代码

}

...

//如果catch中没有继续throw异常以及没有产生新异常,则继续执行的代码

如果想要代码继续执行,可以在catch中不继续抛出异常,则代码将执行catch之后的代码(如果有finally,则先执行finally的代码)。如果想要在产生桐皮基异常之后仍需要执行一部分代码,则可以将该部分代码放在finally中。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12554132.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存