加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-14 16:26:50 所属栏目:大数据 来源:网络整理
导读:我有以下2个groovy片段,应该做同样但但他们没有. try { throw new RuntimeException()} catch (IllegalStateException) { println("hello!")} 这个’你好
我有以下2个groovy片段,应该做同样但但他们没有.

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

这个’你好!’的输出

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

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

Caught: java.lang.RuntimeException
java.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文档中的“捕获任何异常”部分.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读