10.6异常相关详解

异常相关

    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异常相关详解)