Error异常

异常

检查性异常

最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在的文件时,一个异常就发生了,这些异常在编译时不能被简单的忽略。

运行时异常

运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。

错误

错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就产生了,他们在编译也检查不到的。


异常体系结构:Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。

2017112014140634.png

Error一般是发生在虚拟机生成并抛出

Exception分支中有一个很重要的子类RuntimeException运行时异常,一般是程序逻辑错误引起的。

运行时异常主要有:

  • ArrayIndexOutOfBoundsException(数组下标越界)

  • NullPointerException(空指针异常)

  • ArithmeticException(算数异常)

  • MissingResourceException(丢失资源)

  • ClassNotFoundException(找不到类)

  • 等异常


image-20210118192559200


捕获和抛出异常

  • 抛出异常
  • 捕获异常

关键字try ,catch,finally,throw,throws

try{
    //监控区域
}catch(Throwable e){
    //捕获异常
    e.printStackTrace//打印栈信息
}catch(){
    //可以层层捕获异常,要捕获多个异常,需要从小到大
}finally{
    //处理善后工作
}//trycatch是需要的,finally可以不需要

Idea快捷键:Ctrl+Alt+T, alt+enter


public void test(int a,int b){
    if(b==0){//throw throws
        throw new ArithmeticException();//主动的抛出异常,一般在方法中使用
    }
}

public void test(int a,int b) throws ArithmeticException{
    if(b==0){}
}

自定义异常

public class MyException extends Exception{
    //传递数字>10
    private int detail;
    
    public MyException(int a){
        this.detail = a;
    }
    
    //toString:异常的打印信息
    @override
    public String toString(){
        return "MyException{"+detail+"}"
    }
}

image-20210119111533911

posted @ 2021-03-02 11:46  PitayaWalk  阅读(16)  评论(0)    收藏  举报