我尝试编写一些jshell脚本 . 抛出异常时,jshell仍继续执行下一行 .
如何让我的脚本更像普通的java程序?
Edit :我只是像 jshell SCR.jsh
一样运行它 .
使用 throw new Exception()
或 1/0
不会阻止执行下一行 .
该脚本包含如下语句:
System.out.println(1/0)
System.out.println("foo")
/exit
我以为第二行无法访问 . 这就是我的预期 . 但是在打印异常后,也会打印 foo
.
2 回答
根据我的理解,即使在抛出异常之后,
jshell
也会执行脚本中所有行的原因是因为它将您的脚本视为Snippet的列表 .因此,即使其中一个代码段引发异常,其他代码也必须遵循 Read-Eval-Print Loop (REPL)模式 . 同样answered yourself将代码转换为语句块将其标记为单个
Snippet
,当它抛出java.lang.ArithmeticException
时,标记其完成 .理想情况下,这些语句应该被定义为声明片段 .
最后我想我找到了一个解决方法:
现在它更接近熟悉的java代码 .
不仅异常按预期工作,而且在块内部也需要分号 .