美文网首页
10.6异常相关详解

10.6异常相关详解

作者: 205蚁 | 来源:发表于2018-11-18 16:56 被阅读0次

    异常相关

      1. 异常体系
      1. 异常使用
      1. 一些异常的面试题
      1. java中的final,finalize,finally关键字的区别

    1.异常体系

      1. error/Exception
      1. 非运行时异常/运行时异常

        java中把异常当对象处理

    2.异常使用

    • 1.运用Java异常处理机制
      • 1.try。。catch语句
      • 2.finally 语句:任务情况下都必须执行的代码
      • 3.throws子句:声明可能会出现的异常,在方法声明处使用
      • 4.throw语句:抛出异常
    • 2.异常处理的原理
      • 1.Java虚拟机用方法调用栈(method invocation stack)来跟踪每个线程中一系列的方法调用过程
      • 2.如果在执行方法的过程中抛出异常,则java虚拟机必须找到能捕获该异常的catch代码块
      • 3.当Java虚拟机追溯到调用栈的底部方法时,如果仍然没有找到处理该异常的代码块就会打印异常栈,并终止线程
    • 3.异常流程的运行过程
      • 1.如果在finally之前调用了 System.exit(0)退出虚拟机,则不会finally不会执行
      • 2.如果在finally之前调用了return 值; 先执行finally再return
      • 3.如果在finally之前调用了return 值,这时限制性finally不能改变返回值,return 语句机制。
      • 4.建议不要再finally代码块中使用return 语句,可能导致很多错误,覆盖前面
        finally代码块中有return语句,导致catch代码块中的throw没有执行,问题就很严重了

    3.一些异常的面试题

    • 1.java中的检查性异常和非检查性异常有什么区别?
      • 1.Error属于非检查性异常
      • 2.Exception
    • 2.throw和throws这两个关键字在java中有什么不同
      • 1.throw是在方法体中,抛出一个具体的异常
      • 2.throws
    • 3.如果执行finally 代码块之前方法 返回了结果,或者JVM退出了,finally块中的代码还会执行吗?
      finally代码块中会不执行的3中情况:
      • 1.在try代码块之外异常或者返回不是异常代码块
      • 2.在执行try代码块是退出了JVM java虚拟机
      • 3.在执行线程中 突然关闭了线程 也可能不执行代码块

    4.java中的final,finalize,finally关键字的区别

    相关文章

      网友评论

          本文标题:10.6异常相关详解

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