[转载]Java异常处理中Try-Catch-Finally中常见的笔试题
假设利⽤ return 语句从 try 语句块中退出。在⽅法返回前,finally⼦句的内容将被执⾏。如果 finally ⼦句中也有⼀个 return 语句,这个返回值将会覆盖原始的返回值。但是finally之外的则不会被执⾏
public int add(int a,int b)
{
try {
return a+b;
}
catch (Exception e) {
scanf是什么意思英语c语言System.out.println("catch语句块");//不会执⾏
}
html表单用户名和密码提交finally{
System.out.println("finally语句块");
}
//因为try中有return,所以finally之后的都不会执⾏
System.out.println("我不会出现的!");//不会执⾏
return 0;//不会执⾏
}
1、finally块⼀定会执⾏,⽆论是否try…catch。
2、finally前有return,会先执⾏return语句,并保存下来,再执⾏finally块,最后return。
3、finally前有return、finally块中也有return,先执⾏前⾯的return,保存下来,再执⾏finally的return,覆盖之前的结果,并返回。
java常见笔试题public static void main(String[] args) {
int k = f_test();
System.out.println(k);
如何排查jvm问题}
public static int f_test(){
int a = 0;
try{
a = 1;
return a;
}
finally{
System.out.println("It is in final chunk.");
a = 2;
return a;
}
}
/*输出:
It is in final chunk.
2*/
public static void main(String[] args) {
try {
int i = 100 / 0;
System.out.println(i);//try后⾯的语句不会执⾏
} catch (Exception e) {
System.out.println(1);
//throw new RuntimeException();
} finally {
System.out.println(2222);
}
//前⾯没有return语句,所以会执⾏
System.out.println(3);
}
/**
* 1
2222
hibernate开启二级缓存3
*/
public static void main(String[] args) {
try {
int i = 100 / 0;
System.out.println(i);//后⾯的语句不会执⾏
} catch (Exception e) {
System.out.println(1);
throw new RuntimeException();//只会执⾏finally中的,其他的不会执⾏
} finally {
System.out.println(2222);
}
//不会执⾏
System.out.println(3);
}
/**
* 1
* 2222
linux中tail命令详解* Exception in thread "main" java.lang.RuntimeException
*/
还是需要理解Try…catch…finally与直接throw的区别:
try catch是直接处理,处理完成之后程序继续往下执⾏.throw则是将异常抛给它的上⼀级处理,程序便
不往下执⾏了。本题的catch语句块⾥⾯,打印完1之后,⼜抛出了⼀个RuntimeException,程序并没有处理它,⽽是直接抛出,因此执⾏完finally语句块之后,程序终⽌了
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论