关于JAVA中的异常那些事儿

  • Post author:
  • Post category:java


背景

1.为什么会有异常机制

答:开发异常处理程序的原因是,如果为每个发放所有可能发生的错误都进行处理的话,任务会显得过于繁重,程序员也不愿意这样做

1

.

正文

1.在Java中,异常的种类体系如下所示:

这里写图片描述


说明

:其中所有异常都是从

Throwable

继承而来,但我们程序员关注的只有右分支

Exception

子类体系,至于左分支

Error

类,是一般程序运行环境由于资源不足、约束失败等不满足程序执行条件造成的,这也不是我们能够控制的。

2.当出现try/catch/finally语句块与return并用时,无论return出现在try中,还是catch中,只要程序进入到二者中之一,那么如果有finally语句,就一定会执行finally里面的子句。

3.JAVA的catch机制是存在顺序的,从上而下依次进行匹配,一旦发生异常将不在进行匹配,且子类的异常对象也可以匹配基类的异常Catch处理程序,因此尽量将高层次的异常放到后边。

4.如果只是重新抛出异常,那么printStackTrace()方法显示的将是原来异常抛出点的调用栈信息,而非重新抛出点的信息。

5.对于右分支Exception体系:

(1)被检查的异常:Exception类本身,及其子类(除RuntimeException)都属于编译时异常,要么通过throws进行声明抛出,要么通过try/catch语句捕获处理,否则不能编译通过。我们自己定义的异常,如果直接继承了Exception,那么就属于编译时异常,是被编译检查的。
(2)运行时异常:RuntimeException类本身,及其子类(如ClassNotFoundException)都属于运行时异常,不需要我们进行任何处理,会自动被上一级调用捕获。

6.如果一个类中含有throws异常声明,那么它的子类也一定会有这些异常声明,且类型保持一致。


  1. 来源于《java编程思想》




版权声明:本文为dazengq原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。