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语句已经准备好的结果。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 八、深入理解java异常处理机制 引子try…catch…finally恐怕是大家再熟悉不过的语句了, 你的答案是...
    壹点零阅读 5,574评论 0 0
  • 初识异常(Exception) 比如我们在取数组里面的某个值得时候,经常会出现定义的取值范围超过了数组的大小,那么...
    iDaniel阅读 5,867评论 1 2
  • 2.JAVA异常 异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程...
    青城楼主阅读 3,584评论 0 0
  • 引言 在程序运行过程中(注意是运行阶段,程序可以通过编译),如果JVM检测出一个不可能执行的操作,就会出现运行时错...
    Steven1997阅读 7,259评论 1 6
  • 概念介绍 异常是发生在程序执行过程中阻碍程序正常执行的错误事件,当一个程序出现错误时,可能的情况有如下3种: 语法...
    niaoge2016阅读 10,726评论 2 20

友情链接更多精彩内容