try...catch...finally

本文详细介绍了try、catch、finally语句在异常处理中的应用。探讨了如何通过这些关键字来控制程序流,确保代码健壮性,并展示了当try代码块抛出异常时,catch与finally的执行顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 关键字;在它们所包括的代码块内,如果发生错误,将对错误进行响应。如果 try 代码块内的任何代码抛出了一个错误(使用 throw 动作),控制将传递到 catch 代码块(如果有),然后传递到 finally 代码块(如果有)。无论是否有错误被抛出,finally 代码块都会执行。如果 try 代码块内的代码未抛出错误(也就是说,如果 try 代码块正常完成),则仍会执行 finally
代码块内的代码。即使 try 代码块使用 return 语句退出,finally 代码块仍会执行。

*catch 中抛出的异常要在finally执行完才会执行抛出的动作,所以如果在finally中使用return后catch 中抛出的异常,就没办法抛出去,演示代码:

@SuppressWarnings ( "finally" )
public static int testException () throws Exception{
try {
System. out .println( "111111111" );
throw new Exception( "@@@@" );
} catch (Exception e){
System. out .println( "2222222222" );
System. out .println(e.getMessage());
throw new Exception( "~~~~~~~~~~~~" );
} finally {
System. out .println( "333333333" );
return 1;
}
}
public static void main(String[] args) {
try {
testException();
} catch (Exception e){
System . out .println(e.getMessage());
}
}

======================

try 代码块后面必须跟有 catch 代码块、finally 代码块,或两者都有。一个 try 代码块可以有多个 catch 代码块,但只能有一个 finally 代码块。您可以根据需要嵌套多层try 代码块(层数没有限制)。

在 catch 处理函数内指定的 error 参数必须为一个简单的标识符,例如,e 或theException 或 x。您还可以为 catch 处理函数中的变量指定类型。如果指定了不同的错误类型,再结合使用多个 catch 代码块,可以捕获从一个 try 代码块抛出的多种类型的错误。

抛出的异常是对象时,如果抛出的对象是指定类型的一个子类,则类型将匹配。如果抛出的是特定类型的错误,将执行处理相应错误的 catch 代码块。如果抛出的不是指定类型的异常,则不会执行 catch 代码块,而会自动将该异常从 try 代码块抛出到与其相匹配的 catch 处理函数。

如果在某个函数内抛出了错误,而该函数中没有 catch 处理函数,则动作脚本解释器退出该函数以及任何调用函数,直到找到一个 catch 代码块。在此过程中,在各层上都会调用 finally 处理函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值