技术分享
🤣printStackTrace()可以打印出方法的调用栈
00 min
2024-8-12
2024-8-13
type
status
date
slug
summary
tags
category
icon
password

多catch语句

可以使用多个catch语句,每个catch分别捕获对应的Exception及其子类。JVM在捕获到异常后,会从上到下匹配catch语句,匹配到某个catch后,执行catch代码块,然后不再继续匹配。
简单地说就是:多个catch语句只有一个能被执行。存在多个catch的时候,catch的顺序非常重要:子类必须写在前面。

finally语句

finally语句块保证有无错误都会执行
finally有几个特点:
  1. finally语句不是必须的,可写可不写;
  1. finally总是最后执行。

抛出异常

如何抛出异常?
  1. 创建某个Exception的实例;
  1. 用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
断言很少被使用,更好的方法是编写单元测试。
上一篇
反射
下一篇
命令行快捷键