异常和异常的处理方式

异常

1 概述

异常是一些用来封装错误信息的对象
它由异常的类型、提示信息、报错的行号提示三部分组成

2 异常的继承结构

3 异常的处理方式

当程序中遇到了异常,通常有两种处理方式:捕获或者向上抛出
当一个方法抛出异常,调用位置可以不做处理继续向上抛出,也可以捕获处理异常
大家可以结合生活中的例子:如果工作中遇到了问题,我们可以选择自己处理(捕获),或者交给上级处理

 捕获方式:

 

try-catch可以嵌套,多种异常类型需要分别处理
* 可以不嵌套,给出通用的解决方案,不需要特殊处理,
* 将所有的异常的子类类型统一看做父类Exception来处理,
* 提供通用的解决方案,这是多态的最为经典的一种用法

 抛出方式:
对于不想现在处理或者处理不了的异常可以选择向上抛出
方式:在方法上设置异常的抛出管道,即:
在可能会会发生异常的方法上添加代码:
throws 异常类型
例如:void method1 throws Exception1,Exception2,Exception3{ }
TIPS:方法上有默认的异常管道:RuntimeException

4 练习:异常测试

创建包: cn.tedu.exception
创建类: ExceptionDemo.java

package cn.tedu.exception;

import javax.jws.soap.SOAPBinding;
import java.util.Scanner;

public class ReviewException {
    public static void main(String[] args) {
        f1();
        f2();
       // f3();
    }

    private static void f3() throws Exception{
        System.out.println("请输入您要计算的第一个整数");

        int a=new Scanner(System.in).nextInt();
        System.out.println("请输入您要计算的第二个整数");
        int b=new Scanner(System.in).nextInt();
        //输入6与0,ArithmeticException: / by zero算数异常,原因除数不能为零
        //输入3与4.4,InputMismatchException:nextInt();输入不匹配异常
        System.out.println(a/b);

    }

    private static void f2() {
        try{
            f1();

        }catch( Exception e){
            System.out.println("输入正确的数据");
        }
    }

    private static void f1() {
        System.out.println("请输入您要计算的第一个整数");

        int a=new Scanner(System.in).nextInt();
        System.out.println("请输入您要计算的第二个整数");
        int b=new Scanner(System.in).nextInt();
        //输入6与0,ArithmeticException: / by zero算数异常,原因除数不能为零
        //输入3与4.4,InputMismatchException:nextInt();输入不匹配异常
        System.out.println(a/b);
    }

}