编程语言
首页 > 编程语言> > 第一阶段 javaSE 异常

第一阶段 javaSE 异常

作者:互联网

Error和Exception

异常体系结构

java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类

在java API已经定义了很多异常类,这些异常类分为两大类,错误Error和异常Exception

img

捕获和抛出异常

异常处理五个关键字:

try catch finally throw throws

 public static void main(String[] args) {
        int a=1;
        int b=0;
        //快捷键 alt + ctrl + t
        try {//try 监控区域
            System.out.println(a/b);
        }  catch (Exception e) { //cath(想要捕获的异常类型)捕获异常
            System.exit(1);//可以自定义操作
            e.printStackTrace(); //打印错误的栈信息
        } catch (Throwable e){
            //catch可以叠加,但要遵循从小到大的原则
        } finally {
            //finally 可以省去
            // 无论捕获或者没捕获到异常,都要执行
            //通常处理善后工作,比如IO流的关闭
            System.out.println("finally");
        }
    }
public static void main(String[] args) {
    int a=1;
    int b=0;
	
    //如果程序自己抛出,会终止程序,捕获方法上抛出的异常,防止程序终止,让程序可以继续运行
    try {
        new Test().test(a,b);
    } catch (ArithmeticException e) {
        e.printStackTrace();
    }

}

//如果方法中,处理不了这个异常,则在方法上抛出异常,让调用这个方法的人去捕获这个异常
public void test(int a,int b) throws ArithmeticException{
    if(b==0){
        throw new ArithmeticException(); //主动的抛出异常,一般用在方法中
    }
}

自定义异常(了解)

  1. 创建自定义异常类
  2. 在方法中通过throw关键字抛出异常对象
  3. 如果在当时抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作
  4. 在出现异常方法的调用者中捕获并处理异常

自定义异常类:继承Exception类,自定义异常内容,实现构造方法和toString方法

public class MyException extends Exception{
    //传递数字,根据数字的大小决定是否抛出异常
    private int detail;
    //异常的构造方法
    public MyException(int detail) {
        this.detail = detail;
    }

    @Override
    public String toString() {
        return "MyException{" + detail +
                '}';
    }
}

测试异常:

//可能会存在异常的方法
static void test(int a) throws MyException {
    System.out.println("传递的参数为:"+a);
    //出现异常可以直接捕获,也可以抛出,让调用这个方法的人捕获
    if(a>10){
        throw new MyException(a);
    }
    System.out.println("OK");
}

public static void main(String[] args) {
    //调用方法,捕获异常
    try {
        test(11);
    } catch (MyException e) {
        System.out.println("MyException:"+e);//e就是MyException类中的toString方法的内容
    }
}

实际应用中的经验总结

标签:自定义,int,捕获,catch,javaSE,异常,MyException,第一阶段
来源: https://www.cnblogs.com/cigarette-lighter/p/16280372.html