gpt4 book ai didi

exception - Controller 未捕获服务引发的异常

转载 作者:行者123 更新时间:2023-12-03 23:21:52 26 4
gpt4 key购买 nike

在我的Grails服务中,我的代码如下:

def createCharge(chargeParams) {
try {
def charge = Charge.create(chargeParams)
} catch (CardException e) {
throw e
}
}

从我的 Controller 执行以下操作:
try  {
service.createCharge(chargeParams)
} catch(CardException e) {

}

但是,我的 Controller 没有捕获CardException的重新抛出。如果我通过以下方式将CardException包装在RuntimeException中:
throw new RuntimeException(e)

和/或从捕获中删除签名,而无需键入就捕获(e),它可以工作,但是我从异常中丢失了一些信息,例如消息。

请注意,CardException是一个Exception,而不是RuntimeException。我不确定这是否重要。

最佳答案

与Java不同,您不必声明Groovy方法抛出的(检查)异常,因为任何未声明的检查异常都包装在UndeclaredThrowableException中。所以这:

def createCharge(chargeParams) {
try {
def charge = Charge.create(chargeParams)
} catch (CardException e) {
throw e
}
}

实际上与以下内容相同:
def createCharge(chargeParams) throws UndeclaredThrowableException {
try {
def charge = Charge.create(chargeParams)
} catch (CardException e) {
throw new UndeclaredThrowableException(e)
}
}

上面抛出的异常,显然不会被以下内容捕获:
try  {
service.createCharge(chargeParams)
} catch(CardException e) {

}

但是它会被以下内容捕获:
try  {
service.createCharge(chargeParams)
} catch(e) {

}

因为这只是以下方面的简写:
try  {
service.createCharge(chargeParams)
} catch(Exception e) {

}

关于exception - Controller 未捕获服务引发的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19987720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com