📜  Groovy-异常处理(1)

📅  最后修改于: 2023-12-03 14:41:39.219000             🧑  作者: Mango

Groovy 异常处理

Groovy是一种基于JVM的动态语言,它支持与Java相同的异常处理方式,同时还提供了一些方便的特性来处理异常。

try-catch-finally 块

在Groovy中,try-catch-finally块的用法与Java一样。代码示例如下:

try {
    // 可能会抛出异常的代码
} catch (Exception e) {
    // 处理异常
} finally {
    // 不管有没有异常都会执行的代码
}
throw 关键字

在Groovy中,使用throw关键字可以抛出一个异常。如下面的代码示例所示:

def divide(int a, int b) {
    if (b == 0) {
        throw new ArithmeticException("除数不能为0")
    }
    return a/b
}

try {
    divide(10, 0)
} catch (ArithmeticException e) {
    println e.getMessage()
}

在上面的代码中,当分母为0时会抛出一个ArithmeticException异常。我们在调用divide方法时使用try-catch语句捕获这个异常并输出错误信息。

自定义异常类

除了Java提供的异常类,我们还可以在Groovy中定义自己的异常类。我们只需要继承Exception或RuntimeException类即可实现自定义异常。下面的代码示例演示了如何定义一个自定义异常类:

class MyException extends Exception {
    MyException() {
        super("这是一个自定义异常")
    }

    MyException(String message) {
        super(message)
    }
}

try {
    throw new MyException("Hello World!")
} catch (MyException e) {
    println e.getMessage()
}

在上面的代码中,我们定义了一个MyException异常类,并重载了两个构造函数。在try块中使用throw关键字抛出这个异常,并在catch块中捕获并输出错误信息。

finally 块中的return语句

在Java中,finally块中的return语句会优先于try块和catch块中的return语句执行。在Groovy中,finally块中的return语句也是如此。下面的代码示例演示了finally块中的return语句:

def test() {
    try {
        return 1
    } catch (Exception e) {
        println e.getMessage()
    } finally {
        return 2
    }
}

println test()

在上面的代码中,我们定义了一个test方法,在try块中使用return语句返回1。在finally块中使用return语句返回2,在调用test方法后输出的结果为2。

以上就是Groovy中异常处理的基本内容,我们可以根据自己的需求适当地添加try-with-resources块、多重catch块等其他特性,提高代码的健壮性。