首页 > 代码库 > java 异常

java 异常

###异常(异常的概述和分类)
* A:异常的概述
    * 异常就是Java程序在运行过程中出现的错误。
* B:异常的分类
    * 通过API查看Throwable
    * Error
        * 服务器宕机,数据库崩溃等
    * Exception
C:异常的继承体系
    * Throwable
        * Error    
        * Exception
            * RuntimeException

###异常(JVM默认是如何处理异常的)
* A:JVM默认是如何处理异常的
    * main函数收到这个问题时,有两种处理方式:
    * a:自己将该问题处理,然后继续运行
    * b:自己没有针对的处理方式,只有交给调用main的jvm来处理
    * jvm有一个默认的异常处理机制,就将该异常进行处理.
    * 并将该异常的名称,异常的信息.异常出现的位置打印在了控制台上,同时将程序停止运行
* B:案例演示
    * JVM默认如何处理异常

###异常(try...catch的方式处理异常1)
* A:异常处理的两种方式
    * a:trycatchfinally
        * try catch
        * try catch finally
        * try finally 
    * b:throws
* B:try...catch处理异常的基本格式
    * trycatchfinally
* C:案例演示
    * try...catch的方式处理1个异常

###异常(try...catch的方式处理异常2)
* A:案例演示
    * try...catch的方式处理多个异常
    * JDK7以后处理多个异常的方式及注意事项


    /**
     * * A:案例演示
     * try...catch的方式处理多个异常
     * JDK7以后处理多个异常的方式及注意事项
     * 
     * 安卓,客户端开发,如何处理异常?try{}catch(Exception e){}
     * ee,服务端开发,一般都是底层开发,从底层向上抛
     * 
     * try后面如果跟多个catch,那么小的异常放前面,大的异常放后面,根据多态的原理,如果大的放前面,就会将所有的子类对象接收
     * 后面的catch就没有意义了
     */
    public static void main(String[] args) {
        //demo1();
        int a = 10;
        int b = 0;
        int[] arr = {11,22,33,44,55};
        
        //JDK7如何处理多个异常
        try {
            System.out.println(a / b);
            System.out.println(arr[10]);
        } catch (ArithmeticException | ArrayIndexOutOfBoundsException e) {    //jdk7异常方式 
            System.out.println("出错了");
        } 
    }

    public static void demo1() {
        int a = 10;
        int b = 0;
        int[] arr = {11,22,33,44,55};
        
        try {
            System.out.println(a / b);
            System.out.println(arr[10]);
            arr = null;
            System.out.println(arr[0]);
        } catch (ArithmeticException e) {
            System.out.println("除数不能为零");
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("索引越界了");
        } catch (Exception e) {                //Exception e = new NullPointerException();
            System.out.println("出错了");
        }
        
        System.out.println("over");
    }

}

###异常(编译期异常和运行期异常的区别)
* A:编译期异常和运行期异常的区别
    * Java中的异常被分为两大类:编译时异常和运行时异常。
    * 所有的RuntimeException类及其子类的实例被称为运行时异常,其他的异常就是编译时异常
    
    * 编译时异常
        * Java程序必须显示处理,否则程序就会发生错误,无法通过编译
    * 运行时异常
        * 无需显示处理,也可以和编译时异常一样处理
* B:案例演示
    * 编译期异常和运行期异常的区别

 

  

java 异常