java中的异常

来源:互联网 发布:php教程网源码 编辑:程序博客网 时间:2024/06/05 07:07

异常的概念

当出现程序无法控制的外部环境问题(用户提供的文件不存在、文件内容损坏、网络不可用….)时,Java就会用异常对象来描述。

Java中的两种处理异常的方法

1、在发生异常的地方直接处理。
2、将异常抛给调用者,让调用者处理。

异常的分类

1、检查性异常:java.lang.Exception
此类异常是程序的逻辑并没有任何问题,出现异常的原因是外在的环境条件不满足。
2、运行期异常:java.lang.RuntimeException
此类异常说明程序中存在数组越界等bug,Java编译器强制要求处理这类异常,并且这类异常需要修改序来修改。
3、错误:java.lang.Error
此类异常不多见。可能是由于程序的bug,也可能是源于环境问题(例如:内存耗尽等)。

异常的处理

1、try….catch
程序运行产生异常时,将从异常发生点中断程序并向外抛出异常信息。
2、finally
如果把finally块置于try…catch…语句后,finally块一般都会得到执行,它相当于
一个万能的保险,即使前面的try块发生异常,而又没有对应异常的catch块,finally
块将马上执行。
3、抛出异常,让调用者去处理这个异常。

finally注:
以下情形,finally块将不会执行:
1、finally块中发生了异常。
2、程序所在线程死亡。
3、在前面的代码中用了System.exit();
4、关闭CPU。

例子:

import java.io.*;
public class Demo_1{
public static void main(String []args){
//try….catch
try{
FileReader fr=new FileReader(“d:\aa.txt”);//d盘中并没有aa这一文件
}catch(Exception e){
e.printStackTrace();
}

//finally,最后一道防线。try{                FileReader fr=new FileReader("d:\\aa.txt");//d盘中并没有aa这一文件            }catch(Exception e){                        e.printStackTrace();                    }finally{                if(fr!=null){            try{                fr.close();            }catch(Exception e1){                e1.printStackTrace();            }        }    //抛出异常        Animal f=new Animal();    f.test1();}

}
class Animal{
private Cat cat=null;
public Animal()
{
cat=new Cat();
}

public void test1(){    System.out.println("111");    //处理异常    try{        son.test2();    }catch(Exception e){        System.out.println("Animal");        e.printStackTrace();    }}

}

class Cat{
public void test2() throws Exception
{
//将异常向上抛给了Animal类里面
FileReader fr=new FileReader(“d:\aa.txt”);
System.out.println(“hahaha1”);
}
}
“`

0 0
原创粉丝点击