type
status
date
slug
summary
tags
category
icon
password
多catch语句
可以使用多个catch语句,每个catch分别捕获对应的Exception及其子类。JVM在捕获到异常后,会从上到下匹配catch语句,匹配到某个catch后,执行catch代码块,然后不再继续匹配。
简单地说就是:多个catch语句只有一个能被执行。存在多个catch的时候,catch的顺序非常重要:子类必须写在前面。
finally语句
finally语句块保证有无错误都会执行
finally有几个特点:
- finally语句不是必须的,可写可不写;
- finally总是最后执行。
抛出异常
如何抛出异常?
- 创建某个Exception的实例;
- 用throw语句抛出。
如:throw new NullPointerException();
在catch中抛出异常,不会影响finally的执行。JVM会先执行finally,然后抛出异常。
绝大多数情况下,在finally中不要抛出异常
异常屏蔽
finally抛出异常后,原来在catch中准备抛出的异常就“消失”了,因为只能抛出一个异常。没有被抛出的异常称为“被屏蔽”的异常,
虽然catch的异常被屏蔽了,但是,finally抛出的异常仍然包含了它。
断言
断言(Assertion)是一种调试程序的方式。在Java中,使用assert关键字来实现断言
JVM默认关闭断言指令,即遇到assert语句就自动忽略了,不执行。
要执行assert语句,必须给Java虚拟机传递-enableassertions(可简写为-ea)参数启用断言。所以,上述程序必须在命令行下运行才有效果:
java -ea 文件名.java
断言很少被使用,更好的方法是编写单元测试。
- Author:夏离
- URL:https://notion-next-lovat-rho-43.vercel.app//article/1b970453-cda0-49e8-ab21-38955c2debf0
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!