异常处理

1.异常捕捉

public class Demo01 {
    public static void main(String[] args) {
        int divisor = 10;
        int dividend = 0;
        //System.out.println(divisor / dividend);//ArithmeticException 算术异常
        try {
            System.out.println(divisor / dividend);//ArithmeticException 算术异常
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("捕获到一个异常");
        }finally {
            System.out.println("不管如何都会执行这里的代码");
        }
            System.out.println("哈哈哈");
    }
}

2

public class Demo02 {
    public static void main(String[] args) {
        int[] a = new int[2];
        Scanner scanner = new Scanner(System.in);
        try{
            int i = scanner.nextInt();
            int j = scanner.nextInt();
            a[0] = j;
            a[2] = i;
            System.out.println(a[0] / a[2]);
            //Array Index OutOf Bounds Exception  数组 索引 超出 边界 异常
            //Input Mismatch Exception 输入 不匹配 异常
            //Arithmetic Exception  数学数字 异常
        }catch (ArrayIndexOutOfBoundsException e){
            System.out.println("数组越界异常");
        }catch (InputMismatchException e){
            System.out.println("数据格式不正常异常");
        }catch (ArithmeticException e){
            System.out.println("算术异常");
        }
    }
}

3.声明异常

public class Demo03 {
    public static void main(String[] args)  {//throws Exception,继续向上声明异常,不处理
        try {
            serSex("双性人");
        }catch (Exception e){//调用者处理异常
            e.printStackTrace();
            System.out.println("非男非女");
        }
        //serSex("afwarf");
    }
    public static void serSex(String sex) throws Exception{//声明异常
        if (!(sex.equals("男") || sex.equals("女")) ){
            throw new Exception("处理不了的异常,扔出去");//抛出异常
        }
    }
}

4.向上声明不处理

public class SexException extends Exception{
    public SexException() {
    }

    public SexException(String message) {
        System.out.println(message);
        System.out.println("我是自定义的异常,知道是非男非女,但是我也没办法处理");
        System.out.println("....");
    }
}
public class Demo04 {
    public static void main(String[] args)  throws Exception{//继续向上声明异常,不处理
        try {
            serSex("双性人");
        }catch (Exception e){//调用者处理异常
            System.out.println("调用者说处理过了");
        }
    }
    public static void serSex(String sex) throws Exception{//声明异常
        if (!(sex.equals("男") || sex.equals("女")) ){
            throw  new SexException("发现一个不对劲的");
        }
    }
}

你可能感兴趣的:(异常处理)