【问题标题】:Groovy catch block not catching MultipleCompilationErrorsExceptionGroovy catch 块没有捕获 MultipleCompilationErrorsException
【发布时间】:2019-09-18 20:58:13
【问题描述】:

我正在尝试捕获异常 (MultipleCompilationErrorsException),但我很难做到(实际上我正在尝试捕获所有类型的错误和异常,如果这很重要的话)。这是我尝试过的:

try {
    some erroneous crap here
    println("wtf! A")
} catch(Throwable all) {
    println("caught!")
}

这行得通。 caught! 显示为输出。


try {
    try some erroneous crap here
    println("wtf! A")
} catch(Throwable all) {
    println("caught!")
}

此代码错误:

org.codehaus.groovy.control.MultipleCompilationErrorsException: 启动失败:/tmp/g.groovy:2:期待“{”,找到“一些”@行 2,第 9 栏。 在这里尝试一些废话 ^

1 个错误


所以现在我有了异常名称,我尝试了:

try {
    try some erroneous crap here
    println("wtf! A")
} catch(MultipleCompilationErrorsException e) {
    println("caught!")
}

这个错误和上面的完全一样:

org.codehaus.groovy.control.MultipleCompilationErrorsException: 启动失败:/tmp/g.groovy:2:期待“{”,找到“一些”@行 2,第 9 栏。 在这里尝试一些废话 ^

1 个错误

谁能告诉我我错过了什么?如何捕获这样的错误/异常?

【问题讨论】:

  • Try-catch 仅捕获运行时错误。编译错误发生在运行之前。因此,除非您将代码放入任何动态评估中,例如 Eval.me( "try some erroneous crap here" ),否则您无法捕获此错误

标签: groovy


【解决方案1】:

“Try Catch's”通常用于处理代码运行期间可能弹出的异常。例如,您可以尝试运行需要导入某个插件/库的命令,但如果用户没有相应的插件/库,则“catch”将处理此异常。

在您的情况下,您似乎正在尝试使用 try 块中的代码语法处理实际错误。如果语法不正确,try 块根本无法运行(这将是编译错误)。我最好的建议是先尝试运行 try 块中的内容,看看它是否会引发异常,然后实现 try catch 块。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 2016-06-26
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多