异常 – Groovy catch语句奇怪的行为

异常 – Groovy catch语句奇怪的行为,第1张

概述我有以下2个groovy片段,应该做同样但但他们没有. try { throw new RuntimeException()} catch (IllegalStateException) { println("hello!")} 这个’你好!’的输出 try { throw new RuntimeException()} catch (IllegalStateException 我有以下2个groovy片段,应该做同样但但他们没有.

try {  throw new RuntimeException()} catch (IllegalStateException) {  println("hello!")}

这个’你好!’的输出

try {  throw new RuntimeException()} catch (IllegalStateException e) {  println("hello!")}

而这个输出是一个意外的例外:

Caught: java.lang.RuntimeExceptionjava.lang.RuntimeException    at 2.run(2.groovy:2)

请注意唯一的区别是,在一个片段中,catch块中没有e参数.

我正在运行以下版本的groovy和JVM.

groovy –version
Groovy版本:2.0.5 JVM:1.6.0_37供应商:Sun Microsystems Inc. *** 作系统:linux

这是预期的行为还是编译器中的错误?
谢谢

解决方法 在第一种情况下,您将引入一个名为IllegalStateException的变量.它相当于:

try {  throw new RuntimeException()} catch (Exception IllegalStateException) {  println("hello!")}

在第二种情况下,您只捕获IllegalStateException,它不是抛出异常的类型,因此catch块不会捕获它.

它不等同于C#的含义,你只是想说你只想捕获IllegalStateException,但你不需要一个变量,因为你不关心异常对象.

请参阅Groovy style and language feature guidelines for Java developers文档中的“捕获任何异常”部分.

总结

以上是内存溢出为你收集整理的异常 – Groovy catch语句奇怪的行为全部内容,希望文章能够帮你解决异常 – Groovy catch语句奇怪的行为所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1228263.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存