作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
自从编写 Java 以来,我曾多次需要编写这样的代码:
做一些可能会失败的事情。如果失败,请重试,但最多 3(或 2 或 5)次。
这种方法应该有效:
for (int i = 0; i < 3; i++) {
try {
doSomething();
} catch(BadException e) {
continue;
}
break;
}
但我不认为它很有表现力。您有更好的解决方案吗?
像这样就好了:
try (maxTimes = 3) {
doSomething();
} catch(BadException e) {
retry;
}
或者:
try (maxTimes = 3) {
doSomething();
if(somethingFailed()) {
retry;
}
}
但这对于 Java 来说是不可能的。您知道可以使用哪种语言吗?
最佳答案
Java 不允许您发明自己的语法,但您可以定义自己的方法来帮助您用更少的代码表达概念:
public static boolean retry(int maxTries, Runnable r) {
int tries = 0;
while (tries != maxTries) {
try {
r.run();
return true;
} catch (Exception e) {
tries++;
}
}
return false;
}
现在你可以像这样调用这个方法:
boolean success = retry(5, () -> doSomething());
// Check success to see if the action succeeded
// If you do not care if the action is successful or not,
// ignore the returned value:
retry(5, () -> doSomethingElse());
关于java - 重复某件事直到成功,但最多 3 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50773886/
我是一名优秀的程序员,十分优秀!