Java的异常机制try、catch、finally、throw和throws五个关键字

在Java中提出了一种假设:如果程序可以顺利完成,那就“一切OK”,把系统的业务实现代码放在try块中定义,所有的异常处理逻辑放在catch块中进行处理。下面是Java异常处理机制的语法规则。
try{
//业务实现代码
} catch(ExceptionClass1 e1){
//错误处理代码
} catch(ExceptionClass2 e2){
//错误处理代码
} finally{
//始终会执行的代码
}
下面是一些异常类关系:在这里插入图片描述
Error:错误,捕获不到!系统崩溃,或虚拟机错误。
Exception:异常!可规避。
例题:
1.如果catch里面有return语句,请问finally里面的代码还会执行吗?如果会,请问在return之前还是之后 ?
示例代码:
private int run() {
int i = 0;
try {
i += 1;
System.out.println(9 / 0);
return i += 2;
} catch (Exception e) {
i++;//i=2
return i;
} finally {
System.out.println(“finally”);
i += 4;
return i += 8;
}
}
提示:Return的两种用法:1.返回数据2.退出当前方法
解析:返回14!
private int run() {
int i = 0;
try {
i += 1;//i=1
System.out.println(9 / 0);
return i += 2;//报异常了,不执行
} catch (Exception e) {
i++;//i=2
return i;
} finally {
System.out.println(“finally”);
i += 4;//i=6
return i += 8;//14,这个return覆盖了之前的return,所以返回了14
}
}

2、下面代码运行结果是(   B   )

public class Demo{
public int add(int a,int b){
try{
return a+b;
}catch(Exception e){
System.out.print(“catch 语句块”);
}finally{
System.out.print(“finally 语句块”);
}
return 0;
}
public static void main(String[] args){
Demo demo = new Demo();
System.out.println(“和是:”+demo.add(9,34));
}
}
A) 编译异常
B) finally语句块 和是:43
C) 和是:43 finally语句块
D) catch语句块 和是:43

解析:return后退出了当前方法,但是finally语句继续执行,所以先输出finally的语句,再输出return返回main方法中的输出语句。

发布了2 篇原创文章 · 获赞 0 · 访问量 10

猜你喜欢

转载自blog.csdn.net/bwqch/article/details/103211748