Java异常体系

什么是异常

异常本质上是程序的错误,错误在我们编写程序的过程中经常发生,包括编译期间和运行期间的错误,编译期间错误编译器会给出提示,运行期间错误编译器不会提示,往往难以所料。


异常的分类

在这里插入图片描述

  • Java中通过 Throwable 及其相关子类对异常进行描述
  • Error 是程序无法处理的错误,表示运行应用程序中较严重的问题,这类错误是不可查的,不需要处理它所引起的异常
  • Exception 是程序本身可以处理的异常。异常处理通常指的是对这种类型或其子类进行处理
  • Unchecked Exception (非检查异常) 编译器不要求强制处置的异常,RuntimeException 子类就是非检查异常
  • Checked Exception (检查异常) 编译器要求必须处置的异常,除了 RuntimeException 的子类,基本都是检查异常

异常处理机制

异常处理机制为:先抛出异常,后捕获异常

  • 抛出异常:当一个方法中出现错误引发的异常时,方法会创建异常对象并交付给运行时系统进行处理,异常对象通常包含异常类型及异常出现时的程序状态等
  • 捕获异常:运行时系统捕获到异常后,会去寻找合适的处理器,如果找到与之匹配的处理器就会执行相关的处理逻辑,如果始终没找到,运行时系统将会终止,即Java程序终止运行
  • Java规定:对于可查异常必须捕获,或者声明抛出;允许忽略不可查的RuntimeException和Error

三种异常处理方式

try-catch-finally用于捕获异常
  • try块负责抛出异常,catch块负责捕获异常,finally块无论如何都会执行
  • try块后可跟一个或多个catch块,如果没有catch块,则必须跟一个finally块
  • 应用多重catch进行异常捕获时,需要注意范围,即大范围(父类)后置,建议在catch块最后加一个父类异常Exception用于捕获意料之外的异常
  • e.printStackTrace(); 可以打印出错误的堆栈信息,包括错误的描述、错误的类型、错误出现的位置,但输出位置是随机的
  • return不能打断finally块的执行,所以不建议在finally中写return语句
  • System.exit(1); 终止当前正在运行的Java虚拟机,且不会执行finally块中代码
throws声明可能要抛出的异常
  • 如果一个方法可能会出现异常,但却没有能力处理这种异常,可以在方法声明处用throws子句来声明抛出异常,谁调用这个方法,谁就来处理它
  • throws后可跟单个或多个异常类型,不可跟异常对象
throw手动抛出异常,例如:throw new Exception(“我是一个异常”);
  • 通过try-catch包含throw语句,自己抛出自己处理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Dynamic_Pro

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

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

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

打赏作者

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

抵扣说明:

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

余额充值