Java异常处理机制

异常的继承结构

异常在Java中以类和对象的形式存在。
下面是异常的结构:
在这里插入图片描述
Object下面有Throwable;
Throwable下面有两个分支:

  1. Error(不可处理,直接退出JVM)
  2. Exception(可处理的);
    Exception下面有两个分支:
    • RuntimeException,运行时异常。
      这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。运行时异常的特点是Java编译器不会检查它,也就是说,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过。
    • 编译异常(非运行时异常)
      Exception中除RuntimeException及其子类之外的异常。编译器会检查此类异常,如果程序中出现此类异常,比如说IOException,必须对该异常进行处理,要么使用try-catch捕获,要么使用throws语句抛出,否则编译不通过。

运行时异常vs编译异常
运行时异常发生的概率一般比较低。没有必要进行预处理。
编译时异常发生的概率一般比较高。对于一些发生概率比较高的异常,需要在运行前对其进行处理。

注意:
编译时异常和运行时异常,都发生在运行阶段。只有程序运行期间才可以new对象,异常的发生就是new异常对象。


Java中对异常的处理方式

throws

在方法声明的位置上,使用throws关键字,抛给上一级(谁调用我,我就抛给谁)
上抛类似于推卸责任,继续把异常传递给调用者。
只要异常没有捕捉,采用上报的方式,此方法的后续代码不会继续执行。

注意:
Java中发生异常以后,如果一直上抛,最终抛给了main方法,main方法继续上抛,抛给了调用者JVM,JVM知道这个异常发生,只有一个结果——终止Java程序的执行。

try…catch

使用try…catch语句进行异常的捕获。这件事情发生了,谁也不知道,因为我给抓住了。
捕捉等于把异常拦下了,异常真正得到解决了,调用者是不知道的。
try语句块中的某一行出现异常,则该行后面的代码不会执行。try…catch捕捉异常之后,后续代码可以执行。


异常对象的常用方法

如何取得异常对象的具体信息,常用的方法主要有两种:

  1. 取得异常描述信息:getMessage()
  2. 取得异常的堆栈信息(比较适合于程序调试阶段):printStackTrace();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不知-_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值