您的位置:首页 > 编程语言 > Java开发

java—try、catch、finally的使用

2014-07-31 08:29 323 查看
很多时候,Java程序中的异常都会让程序无法往下运行,这时候,try、catch语句块的作用就凸现出来了。

try、catch、finally最简单的模式如下,不过很多时候finally经常会省略不写。



还是从代码中看问题吧。

public class Hello{
public static void main(String args[]){

int a=1,b=2,c=0,result;
try{
System.out.println(1);
result=a/b;
System.out.println(2);
}catch(Exception e){
System.out .println("There is e Exception");
e.printStackTrace();
}finally{
System.out.println(3);
}
}
输出结果为



注意到try{}里面有语句 result=a/b,如果把除数设置为0,这里设置除数为c=0,即 result=a/c,看结果



结果对比:

第一个程序没有任何异常或者错误,结果可以看出程序执行了try{ }的语句和finally{ }的语句,而catch(){}中的输出语句并没有被执行。

第二个程序因为除数为0而存在异常,结果发现程序只执行了try{ } 中的第一条输出语句,接着直接跳到catch(){},执行了catch中的语句,接着执行finally{}中语句。

结果分析:

对比总结,可以发现这正是try-catch语句块的用处所在。

如果try{}中语句没有异常,则正常执行try{}里的所有语句后,程序会跳过catch,即不执行catch中的语句,直接到finally里面执行。而如果当try{}中有语句存在异常,根据程序是从上往下执行的顺序,异常语句之前的代码语句被执行后,检测到异常,try{}中异常语句之后的代码将不会被执行,程序直接跳转到catch中执行里面的语句,并输出异常,然后执行finally里面的语句,而程序并没有因为存在异常而终止。

所以,如果在编写程序代码时,如果有语句可能存在异常,如可能会存在数据类型不匹配,数组越界的问题,则可以把它放到try-catch语句里面执行。这是java或其他语言中的一个错误异常处理机制,可以顺利的帮助我们捕捉到异常,从而解决异常,这对于程序的维护会有很多的帮助,当然,可能小小的程序无法凸显出它的作用,不过想必日后会有所见识的。

还有一点就是这个finally{}到底有什么作用呢,说了这么多还是感觉finally{}可有可无呢?确实,很多时候,finally确实是被忽略掉的,也是可以被忽略掉的。finally{}可以称之为异常的出口,无论程序存在或不存在异常,finally{}的语句都会被执行。Mars老师的视频也有讲过,在用到IO流的时候,如果在try{}中有一句打开文件的代码,那关闭文件夹的一句代码该放在哪里好呢?放在try{}或catch中都不合适,因为都有可能不被执行。所以只能放到finally{}里面了。不过我有个疑问:直接在catch结束后写上不就得了吗?也是可以被执行的呀,干嘛非得写在finally里面呢?当然关于finally{}自己没有用过,所以还真是不知其妙用之处,有哪位童鞋知道的请麻烦不吝赐教了,谢谢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: