谁能说说finally和except的具体用法(详细)
有教科书关于finally的说明如下:
在任何情况下, finally块中的代码都会执行, 考虑三种情况:
1. 如果try中没有异常, finally块执行, try语句的下一条语句被执行.(什么意思, 这句话是不是有毛病)
2. 如果try中有一条语句引起异常, 并被catch捕获, 跳过try中其他语句, 执行catch块和finally块的语句.如果catch块没有重新抛出异常, 就会执行try语句之后的下一个语句.(什么意思, 难道执行完catch块后还会返回try块, 是不是错了)如果重新抛出异常, 就将异常传递给方法调用者.
3. 如果try中有一个语句引起异常, 但是没有被任何catch块捕获, 就会跳过try块的其他语句, 执行finally子句, 并且将异常传递给这个方法的调用者.
4. 即使在到达finally块之前有一个return语句, finally块还是会执行.
有教科书关于finally的说明如下:
在任何情况下, finally块中的代码都会执行, 考虑三种情况:
1. 如果try中没有异常, finally块执行, try语句的下一条语句被执行.(什么意思, 这句话是不是有毛病)
2. 如果try中有一条语句引起异常, 并被catch捕获, 跳过try中其他语句, 执行catch块和finally块的语句.如果catch块没有重新抛出异常, 就会执行try语句之后的下一个语句.(什么意思, 难道执行完catch块后还会返回try块, 是不是错了)如果重新抛出异常, 就将异常传递给方法调用者.
3. 如果try中有一个语句引起异常, 但是没有被任何catch块捕获, 就会跳过try块的其他语句, 执行finally子句, 并且将异常传递给这个方法的调用者.
4. 即使在到达finally块之前有一个return语句, finally块还是会执行.
解决方案 »
- 短信猫 发短信时 出现乱码
- java中的type是干什么的?
- 提一个关于 flip() 和 rewind() 的问题。
- 大图中有很多小图,怎么在这个大图中切换里面的小图?怎么可以让图的白色背景去掉吖?
- 请大家帮我看一下,为什么不能输出自己的成员变量,急急,等待中..................
- jbuilder2006,刚安装完,双击启动,启动画面一闪,启动不了
- BufferedInputStream的read方法的返回值
- 一个非常非常棘手的问题,请教各位!!!!!!!!
- 求个java和js的正则表达式
- 第一天得到1块钱,从第二天开始,得到的钱是前一天的一倍。问第30天,一共能得到多少钱。用循环解决此问题。JavaScript求解
- 关于jdk升级
- 用JMF做的视频播放程序能扩展播放别的格式的文件吗?
//statement1
//statement2
//statement7 return result
} catch (NullPointerException e) {
//statement6 process Exception
//statement5 throws new OtherException(e);
} finally {
//statement3
}
//statement41、如果statement1没有抛出异常,statement2被执行
2、如果statement5没有被执行,statement4被执行
3、如果statement1抛出Exception异常,catch只能捕获NullPointerException就会跳过try块的其他语 句, 执行finally子句, 并且将异常传递给这个方法的调用者.
4、如果statement7被执行, statement3还是会被执行
书中想表达的是try这个代码块后边的语句在处理完异常后继续执行的记得计算机中透明是表示对用户不可见吧
明显的很汉语习惯不一样,汉语中透明是可见内部的意思
但英文中就相反 最初翻译成透明 后来行内就默认这个意思了结合上下文来理解
这里是指try整个块之后的语句,翻译的不太好吧
if(try) {
a=b;
} else {
catch();
finally();
return;
}
if(try) {
c=b;
} else {
catch()
finally();
return;
}
finally();
return;
}
boolean try(int b){
if(b!=null)
return true;
else
return false;
}
void catch(){
System.out.println(new NullPointerException().getMessage());
}
void finally(){
System.out.println("finally执行完毕");
}
人总有得病的,得病了就得找医生诊断,catch就是诊断的医生它会把try里面监测的代码具体报出了什么异常给诊断出来。当然人也可能不生病,代码很正常的走下去。
但是不管人是不是会生病,总是难免一死,finally里面就是要料理后事的
呵呵
try {
String str = "1hh23";
int a = Integer.parseInt(str);
System.out.println(a);
} catch(NumberFormatException ex) {
try {
int a = Integer.parseInt("t56y");
} catch(NumberFormatException e) {
ex.printStackTrace();
}finally {
System.out.println("finally 1");
}
} finally {
System.out.println("finally");
}
}
try里面的语句是碰到错误就跑到except里面,try快内的剩下的不执行。
try所有的语句正确就不执行except里面。
其实这句话是错误的,有一个例外,在被执行了的try或catch语句中只要有System.exit(-1);这条语句(参数好像其他也可以,不一定非要-1),finally语句就不会被执行,因为程序都退出了。