异常

来源:互联网 发布:数据挖掘算法书籍推荐 编辑:程序博客网 时间:2024/06/05 20:33
异常体系:
--------|Throwable  所有异常或者错误类的超类
-----------|Error   错误   错误一般是由于jvm或者是硬件引发的问题,所以我们一般不会通过代码去处理错误的
-----------|Exception  异常  是需要通过代码去处理的。

如何区分错误与异常呢?
    如果程序出现了不正常的信息,如果不正常的信息的类名是以Error结尾的,那么肯定是一个错误

    如果是以Exception结尾的,那么就是一个异常


package cn.itcast.duo;
/*
异常的处理:
    方式一:捕获处理
        捕获处理的格式:
            try{
                可能发生异常的代码;
            }catch(捕获的异常类型   变量名){
                处理异常的代码
            }
            
    捕获异常要注意的细节:
        1.如果try块中代码出了异常经过了处理之后,那么try-catch块外面的代码还可以正常执行
        2.如果try块中出现了异常的代码,那么在try块中出现异常代码后面的代码是不会执行的
        3.一个try块后面可以跟有多个catch块,也就是说一个try块可以捕获多种异常的类型
        4.一个try块可以捕获多种异常的类型,但是捕获的异常类型必须从小到大进行捕获,否则编译报错

*/
public class Demo10 {

    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5,6};
        div(4,0,arr);
    }
    
    public static void div(int a,int b,int[] arr){
        int c = 0 ;
        try{
            c = a/b;
            System.out.println(arr.length);
        }catch(ArithmeticException e){
            System.out.println("b不能为0");
            System.out.println(e.toString());
        }catch(NullPointerException e){
            System.out.println("出现了空指针异常...");
        }catch(Exception e){
            System.out.println("包治各种异常...");
        }
        System.out.println("c="+c);
    }
}


package cn.itcast.duo;
/*
异常的处理方式二-------抛出处理

抛出处理(throw  throws)

抛出处理要注意的细节:
    1.如果一个方法内部抛出了一个异常对象,那么必须要在方法声明抛出
    2.如果调用了一个声明抛出异常的方法,那么调用者必须要处理异常
    3.如果一个方法内部抛出了一个异常对象,那么throw语句后面的代码都不会再执行了(一个方法遇到了throw关键字,该方法也会马上停止执行)
    4.在一种情况下,只能抛出一种类型异常对象

throw和throws两个关键字:
    1.throw关键字是用于方法内部的,throws是用于方法声明上的
    2.throw关键字是用于方法内部抛出一个异常对象的,throws关键字是用于方法上声明抛出异常类型的
    3.throw关键字后面只能有一个异常对象,但是throws关键字后面可以声明抛出多个不同的异常类型
    
疑问:何时使用抛出处理?何时使用捕获处理?原则是什么?
答:如果你需要通知到调用者,你的代码出了问题,那么这时候就可以使用抛出处理
       如果代码是直接与用户打交道的,那么遇到了异常千万不能抛出处理,因为抛出处理的话,这个异常就给了用户了,而这时候应该使用捕获处理。

*/
public class Demo11 {

    public static void main(String[] args) {
        
        try {
            int[] arr = null;
            div(4,2,arr);
        } catch (Exception e) {
            System.out.println("出现了异常...");
            e.printStackTrace();
        }
    }
    
    public static void div(int a,int b,int[] arr) throws Exception,NullPointerException{
        if(b==0){
            throw new Exception();
        }else if(arr==null){
            throw new NullPointerException();
        }
        
        int c = 0;
        c= a/b;
        System.out.println("c="+c);
    }
}



原创粉丝点击