Groovy 异常:throw/try-catch-finally

Groovy中的异常处理完全与java相同并且有相同的逻辑,正像jav a那样,你可以指定完整的try-catch-finally块顺序,或者仅仅使用try-catch,或者仅仅try-finally,注意,不像其他的控制结构是不管否包含处理语句花括号都是必须的,groovy和java不同的地方时在方法申明的时候是否声明异常是可选的,即使是检查的异常,列表6.11显示了常用的行为。

虽然在groovy的其他地方类型声明是可选的,但在catch表达式中类型是必须的。

当检查的异常没有声明的时候,groovy不能生成编译时或者运行时警告,当一个检查的异常没有处理的时候,这个异常会像RuntimeException那样传播。

在第11章覆盖了集成java和groovy的更详细的信息,在这里讨论异常处理是有价值的,当在java中使用groovy类的时候,你得当心——groovy方法没有声明抛出任何检查异常(除非你显式的增加了声明),即使在运行时抛出了一个检查的异常,不幸的是,如果你在java中捕捉一个检查的异常,但是它发现没有这样一个异常抛出的时候,编译器会聪明的抱怨,如果你运行到这里并且需要显示的捕捉在groovy代码中产生的检查的异常,你也许需要在groovy代码中增加一个throw s声明,这样编译器才不会抱怨。