Nic*_*zyk 13 ruby java groovy exception
在Ruby中,我可以写:
begin
do_something # exception raised
rescue
# handles error
retry # restart from beginning
end
Run Code Online (Sandbox Code Playgroud)
Groovy/Java中有类似的东西吗?
我找到了这个,但也许有更好的东西?
win*_*n74 18
您可以在Groovy中构建自己的帮助器方法来封装此重试逻辑.
def retry(int times = 5, Closure errorHandler = {e-> log.warn(e.message,e)}
, Closure body) {
int retries = 0
def exceptions = []
while(retries++ < times) {
try {
return body.call()
} catch(e) {
exceptions << e
errorHandler.call(e)
}
}
throw new MultipleFailureException("Failed after $times retries", exceptions)
}
Run Code Online (Sandbox Code Playgroud)
(假设MultipleFailureException的定义类似于GPars的AsyncException)
然后在代码中,您可以使用此方法,如下所示.
retry {
errorProneOperation()
}
Run Code Online (Sandbox Code Playgroud)
或者,具有不同数量的重试和错误处理行为:
retry(2, {e-> e.printStackTrace()}) {
errorProneOperation()
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6822 次 |
最近记录: |