如何在Java 9中的JShell中处理异常?

在Java 9中,JShell 提供了一种快速友好的环境,使我们能够快速探索,发现和试验Java语言功能和广泛的库。

在JShell中,不需要手动捕获异常。JShell 自动捕获每个异常并显示有关该异常的信息,然后显示下一个JShell提示,以便我们继续我们的会话。它也适用于未经检查的 异常 。通过自动捕获已检查 未检查的 异常,JShell使我们可以更轻松地尝试引发已检查的异常的方法。

在下面的示例中,由于  找不到“ values [4]”的值,因此发生了ArrayIndexOutOfBoundsException 

示例1

jshell> int[] values = {10, 20, 30}
values ==> int[3] { 10, 20, 30 }

jshell> values[4]
|   java.lang.ArrayIndexOutOfBoundsException thrown: 4
|        at (#7:1)


在下面的示例中,由于在目录中找不到文件,因此发生FileNotFoundException 

示例2

jshell> FileInputStream fis = new FileInputStream("data.txt")
| java.io.FileNotFoundException thrown: data.txt (The system cannot find the file specified)
|       at FileInputStream.open0 (Native Method)
|       at FileInputStream.open (FileInputStream.java:196)
|       at FileInputStream. (FileInputStream.java:139)
|       at FileInputStream. (FileInputStream.java:94)
|       at (#5:1)


在下面的示例中,因为未定义1/0 ”的值,所以发生了ArithmeticException (未经检查的异常)。

示例3

jshell> 1/0
|  java.lang.ArithmeticException thrown: / by zero
|        at (#4:1)