异常机制

异常机制

异常指程序运行中出现的不期而至的各种情况

  1. 检查性异常/编译异常

    用户错误

  2. 运行时异常

    运行时异常有可能在编译时被忽略

    NullPointerException
    ArithmeticException
    ArrayIndexOutOfBoundsException
    ClassCastException
    NumberFormatException

  • ERROR
public static void main()
{
    int a=1,b=0;
try{//监控区域
    System.out.println(a/b);
}
catch(ArithmeticException e)//捕获的异常类型
{//异常封装到e对象内
    System.out.println("");
}
finally{//处理善后工作,不管有没有异常,finally都要执行
    System.out.println("");//finally 可以省略
    //通常将释放资源的代码放到finally内
}
}
//可以有多个catch,最大的捕获异常类型应放在最下面
  • exception异常

throws机制,将处理异常的任务交给调用者
如果有try-catch-finally机制则处理

  • 可以有多个catch来catch不同的异常,子类异常写在父类异常之前(异常最多只能被catch一次)
//主动抛出异常,一般在方法中使用
if(b==0)
{
    throw new ArithmeticException();
}
//在方法上抛出异常
public void test(int a, int b)throws ArithmeticException//也可以为可能发生的异常的父类异常/多个异常
{
    ;
}

子类重写父类抛出异常时,要么和父类抛出的异常一致,要么是父类抛出的异常的子类异常(不能扩大异常的范围)
编译异常必须显示地处理

自定义异常

static class myException extends RuntimeException{
    private int detail;
    public myException (int a){
    this.detail=a;
}
    @Override
    public String toString()
{
    return "myException{"+"detail="+detail+"}";
}
}
public class test{
    static void test(int a)throws myException{
    if(a>10)
    throw new myException(a);
    System.out.println("ok");
}
    public static void main(String[] args){
    try{
    test(10);
}
catch (myException e)
{
    System.out.println("myException=>"+e);
}
}

}
posted @ 2022-12-15 19:58  5hithin  阅读(30)  评论(0)    收藏  举报