Java异常体系总结

《Java异常体系总结》 Java异常体系图

Error(错误):

是程序无法处理的错误,表示运行应用程序中较严重问题。例如,Java虚拟机运行错误(Virtual MachineError)

Exception(异常):

是程序本身可以处理的异常。

异常和错误的区别:异常能被程序本身可以处理,错误是无法处理。

Exception分为:可查的异常(checked exceptions)和不可查的异常(unchecked exceptions)
RuntimeException为不可查异常,其余异常都属于可查异常(编译异常)。

编译性异常(checked exceptions)必须抛出异常,否则无法编译通过。

一个 try 块可能有多个 catch 块。Java虚拟机会把实际抛出的异常对象依次和各个catch代码块声明的异常类型匹配,如果异常对象为某个异常类型或其子类的实例,就执行这个catch代码块,不会再执行其他的 catch代码块

当try捕获到异常,catch语句块里有处理此异常的情况:在try语句块中是按照顺序来执行的,当执行到某一条语句出现异常时,程序将跳到catch语句块,并与catch语句块逐一匹配,找到与之对应的处理程序,其他的catch语句块将不会被执行,而try语句块中,出现异常之后的语句也不会被执行,catch语句块执行完后,执行finally语句块里的语句,最后执行finally语句块后的语句;

throws和throw的使用区别:

throws用在方法声明中,throw用在方法体中,
如 throw new MyException(“除数不能是负数”); 程序会在throw语句后立即终止。

自定义异常:
public class MyException extends Exception { 

  private static final long serialVersionUID = 1L; 

  // 提供无参数的构造方法
  public MyException() { 
  } 

  // 提供一个有参数的构造方法,可自动生成
  public MyException(String message) { 
    super(message);// 把参数传递给Throwable的带String参数的构造方法 
  } 

} 

在异常判断条件成立的地方调用throw new MyException()抛出这个自定义异常。

Java异常try里面有return,finally代码会执行吗?

会执行。finally{}块的代码只有在try{}块中包含遇到System.exit(0);之类的导致Java虚拟机直接退出的语句才会不执行。
当程序执行try{}遇到return时,程序会先执行return语句,但并不会立即返回,也就是在将要返回、但并未返回的时候,程序把执行流程转去执行finally块,当finally块执行完成后就直接返回刚才return语句已经准备好的结果。

    原文作者:奔跑吧李博
    原文地址: https://www.jianshu.com/p/2d4f855fc280
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞