美文网首页
2022-12-23

2022-12-23

作者: RobertLiu123 | 来源:发表于2022-12-22 17:23 被阅读0次

    一、异常体系树

    image.png

    二、Error错误

    描述的是错误,比如主板烧坏了、网络断了等程序员无法处理的问题

    三、Exception异常

    描述的是程序上的问题,程序员可以通过严谨的编码习惯和处理,防止异常的发生

    四、检查性异常

    需要指出,检查性异常虽然是在编码过程中报红,但是不是语法错误,需要处理

    五、运行时异常

    顾名思义,程序编码过程中不会提示,需要到运行后才能看到

    六、处理异常的方式

    1、在方法体中处理
    try catch
    2、在方法声明处处理
    throws

    七、try catch

    1、try catch处理时,异常在自己方法内部就被处理了,调用这个方法的地方压根感知不到异常的存在
    2、try后边可以接很多catch,要求不能重复、子类异常要写到父类异常前边
    3、建议最后放一个Exception用于兜底
    4、执行的时候,会从上到下选符合异常的类型,找到后进去执行对应的catch块中的内容

    八、throws

    1、throws处理时,谁调用throws所在的方法,谁就会感知到异常的存在,因此也需要处理,可以选择try catch或者是throws,当然,选择throws,下一个调用它的方法,也需要处理
    2、一般认为throws是一种不太负责的处理方式,因为相当于自己没处理,而把异常抛出给了调用它的方法,因此在主方法中不建议throws,这会把异常抛给jvm,建议在主方法中就try catch

    九、异常发生时jvm的作用

    异常发生前语句正常执行,当异常发生,jvm会自动抛出一个对应类型的异常对象并打印异常信息,同时停止执行程序,这样做是为了系统安全因此异常后的语句不会执行

    十、try catch的几种状态

    try{
    ①
    System.out.println(1/0);
    ②
    }catch(Exception e){
    ③
    }
    ④
    

    异常种类对,①③④可以执行

    try{
    ①
    System.out.println(1/0);
    ②
    }catch(IndexOutOfBoundsException e){
    ③
    }
    ④
    

    异常种类不对,只有①

    try{
    ①
    System.out.println(1/0);
    ②
    }catch(IndexOutOfBoundsException e){
    ③
    }finally{
    ⑤
    }
    ④
    
    try{
    ①
    System.out.println(1/0);
    ②
    }catch(Exception e){
    ③
    }finally{
    ⑤
    }
    ④
    

    finally块不论异常种类对不对都会被执行,因此finally经常应用于,程序执行后必要的操作,比如资源释放
    也可以不写catch,try后直接跟finally,比如:

    try{
    ①
    System.out.println(1/0);
    ②
    }finally{
    ⑤
    }
    ④
    

    十一、Exception常用方法

    构造方法
    getCause()
    getMessage()
    getStackTrace()
    printStackTrace()

    十二、

    final、finally、fianlize区别
    fianl可以修饰量、方法、类
    finally 异常处理块中最后总要被执行的
    finalize 垃圾回收机制

    十三、throw

    手动引发异常
    throw 挑事
    throws 平事

    十四、自定义异常

    相关文章

      网友评论

          本文标题:2022-12-23

          本文链接:https://www.haomeiwen.com/subject/nhdvqdtx.html