Java学习笔记-6.Java异常处理

一、异常简介

1.异常:程序在运行过程中有时会出现一些意外的情况导致程序退出的情况

2.一个异常是由一个对象来表示的,所有的异常都直接或间接地继承自Throwable接口

   Throwable接口是类库java.lang包中的一个类,它派生出两个子类:Error 和 Exception

  (1)Error类主要用来描述一些Java运行时系统内部的错误或资源枯竭导致的错误,此类错误一般由系统进行处理,一般程序本身不需要捕获和处理

  (2)Exception类分为RuntimeException异常 和 非RuntimeException异常

          RuntimeException异常:属于程序缺陷异常,是设计或实现上的问题,此类问题应避免而且可以不捕获,但为保证程序在出错后依然可以执行,在开发时最好用try…catch处理

          非RuntimeException异常:由程序外部问题引起的异常,在语法上要求必须处理,否则不能通过编译,称为受检异常

3.常用异常类(都继承于Exception类,这些异常类各自代表了一种特定的错误)

系统定义的运行异常 异常对应的系统运行错误
ClassNotFoundException 未找到相应的类
ArrayIndexOutOfBoundsException 数组越界
FileNotFoundException 未找到指定的文件或目录
IOException 输入、输出错误
NullPointException 引用空的尚无内存空间的对象
ArithmeticException 算术错误
InterruptedException 一线程被其他线程打断
UnknownHostException 无法确定主机的IP地址
SecurityException 安全性的错误
MalformedURLException URL格式错误

4.用户自定义异常类(必须继承自Throwable 或 Exception类(建议))

  格式:

class MyException extends Exception {
    public MyException() {
        super();
        ...
    }
    public MyException(String s) {
        super(s);
        ...
    }
    public String toString() {
        return("...");
        ...
    }
}

 

二、Java异常处理机制

1.抛出和声明异常:Java程序在运行时如果引发了一个可以识别的错误,就会产生一个与该错误相应的异常类的对象,这个过程叫做异常的抛出

   抛出异常格式:

修饰符 返回类型 方法名 (参数列表) throws 异常类名列表 {    //声明异常

    …

    throw 异常类名;    //抛出异常

    …

}

   当方法抛出异常后,该方法就不能返回到其调用者,而是进入异常处理块中

2.捕捉异常:接受被抛出的异常对象

具体格式:

try {
    //接受监视的程序块,在此区域内发生
    //的异常,由catch中指定的程序处理
} catch (异常类名1 异常形式参数名) {
    //处理异常
} catch (异常类名2 异常形式参数名) {
    //处理异常
}
...
finally {
    //最终处理,每次执行的代码
}

注意:(1)虽然Exception捕捉的范围最大,不管出现任何异常时都可以直接使用Exception进行处理,但是多个异常最好分别进行捕获,而不是直接使用Exception捕获全部异常

         (2)安排多个异常的多个catch语句顺序时,常见异常应放在前面

         (3)捕获异常范围小的异常必须放在捕获范围大的异常之前,否则程序编译会出错

         (4)finally语句为异常处理提供一个统一的出口,无论try所指定的程序块中是否抛出异常,也无论catch语句的异常类型是否与所抛出的异常类型匹配,finally所指定的代码都要被执行,它提供了统一的出口

         (5)通常在finally语句中可以进行资源的清除工作,如关闭打开的文件和关闭数据流等

posted @ 2015-02-22 16:33  trj14  阅读(128)  评论(0编辑  收藏  举报