Java_总结十一(异常处理)

一、异常分类

  --错误(Error):JVM系统内部错误或资源耗尽等严重情况,属于JVM需要负担的责任.

          这一类异常事件无法恢复或不可能捕获,将导致应用程序中断。程序(员)对其不做处理.

  --异常(Exception):其它因编程错误或偶然的外在因素导致的一般性问题。

 

二、异常分类图

 

三、从处理的必要性角度分

  --非受检(unchecked)异常:编译器不要求必须处理的异常。

    --一般是指编程时的逻辑错误。是程序员应该积极避免其出现的异常

    --java.lang.RuntimeException及它的子类都是非受检异常:

      --错误的类型转换:java.lang.ClassCastException

      --数组下标越界:java.lang.ArrayIndexOutOfBoundsException

      --空指针访问:java.lang.NullPointerException

      --算术异常(除0溢出):java.lang.ArithmeticException

  --受检(checked)异常:编译器要求必须处理的异常。指的是程序在运行时由于外界因素造成的一般性异常。

      --没有找到指定名称的类:java.lang.ClassNotFoundException

      --访问不存在的文件:java.io.FileNotFoundException

      --操作文件时发生的异常:java.io.IOException

      --操作数据库时发生的异常:java.sql.SQLException

public class TestException2{
    public int calculate(int num1, int num2)  {
        int result = num1 / num2; 
        return result;
    }
    
    public static void main(String[] args){
        TestException2 test = new TestException2();
        try{
            int i = test.calculate(100, 10);//尝试除以0
            System.out.println(i);
        }catch(Exception e){//注意catch语句的顺序
            System.out.println("父类异常..");
        }catch(ArithmeticException e){
            // 错误–不能到达的代码
            System.out.println("出异常啦");
            e.printStackTrace();
        }finally{
           System.out.println("finally语句块是始终要执行的");
      }
    }
}

 

四、finally 语句

  --finally语句为异常处理提供一个统一的出口,使得在控制流转到程序的其它部分以前,能够对程序的状态作统一的管理。

  --无论在try代码块中是否发生了异常事件,finally块中的语句都会被执行。

  --通常在finally语句块中可以进行资源的清理工作,如:

    --关闭打开的文件

    --删除临时文件

    --关闭数据库的连接等

    --finally语句是可选的。

 

五、自定义异常

  继承自Exception 或其子类。通常调用一下父类的构造方法

public class MyException extends Exception {
    public MyException() {        super();    }
    public MyException(String msg) {        super(msg);    }
    public MyException(Throwable cause) {       super(cause);    }
    public MyException(String msg, Throwable cause) {     super(msg, cause);    }
}

 

  使用自定义异常

public String[] createArray(int length) throws MyException {
    if (length < 0) {    
        throw new MyException("数组长度小于0,不合法");
    } 
    return new String[length]; 
}

 

posted @ 2017-05-09 20:41  Java_皮卡丘漏电  阅读(110)  评论(0编辑  收藏  举报