这是一个非常基本的问题,我想知道我该怎么做。 考虑下面的示例代码。这不是原始代码。我希望实现类似概念的复杂代码
for (i = 0; i < 5; i++) {
System.out.println(i);
try {
accountoutlist = accountstub.accountUpdate(accountinlist);
} catch (Exception e) {
System.out.println("Error Occurred: " + e);
}
}
我希望每当异常发生时,程序应该继续使用for循环。 输出应该是。 用短语“如果发生异常,则忽略它并继续for循环”
这就是输出应该是什么样的,假设在6.Wish Java之后发生了异常,那么它有像BASIC语言这样的GOTO语句
0
1
2
3
Error Occured
4
如果第一部分非常简单,那么只有当异常错误(e)出现
时,我才会喜欢这个(要忽略的例外)Error Occured: Update operation on integration component 'Account' failed because no
matching record in business component 'Account' with search
specification '[Id] = "ALEA-2KXVN0"' could be found.(SBL-EAI-04403)
答案 0 :(得分:0)
Java将goto
作为保留字,但未使用它。
所以你不能用goto
做到这一点。
我假设你在catch块之后有更多的语句。
所以你可以这样做:
在循环之前声明一个布尔标志error
。
将其设置为false
作为循环中的第一行。
在catch块中将其设置为true
。
在try-catch块之后(在你需要的任何行),执行以下操作:if (error) continue;
答案 1 :(得分:0)
如果异常不匹配(例如使用字符串beginsWith()
方法检查),则再次在catch中抛出异常。如果你的try-catch在循环中,那么除非你再次抛出异常,否则循环将自动继续。
最好只捕获所需的特定异常类型(例如NoMatchingRecordException
,而不是捕获所有Exception
。
答案 2 :(得分:0)
检查出来:
for (int i = 0; i < 5; i++) {
System.out.println(i);
try {
accountoutlist = accountstub.accountUpdate(accountinlist);
} catch (Exception e) {
// Ignore
System.out.println("Error Occurred: " + e);
// Skip perfroming further operations. Continue to the next record
continue;
}
// Further operations on the data.
}
答案 3 :(得分:0)
验证捕获的异常消息,如果错误对您重要,则重新抛出
for (i = 0; i < 5; i++) {
System.out.println(i);
try {
accountoutlist = accountstub.accountUpdate(accountinlist);
} catch (Exception e) {
if (e.getMessage().equals("Error Occured: Updat....")) {
throw e;
} else {
System.out.println("Error Occurred: " + e);
}
}
}
但总的来说,更好的是使用异常层次结构并将致命错误与可忽略的错误分开。
答案 4 :(得分:0)
我冒昧地修改了你的代码,以便让Java新手更容易理解。
因此,您应该在for语句之前放置一个标签,然后在catch块内部将一个continue语句放到相应的标签上:
int i;
ArrayList<Integer> arrayList = new ArrayList<Integer>();
returnPoint:for (i = 0; i < 5; i++) {
System.out.println(i);
String buggedPoint = null;
try {
if(i == 3) {
buggedPoint = "bugged";
arrayList.add(Integer.valueOf(buggedPoint));
}
arrayList.add(i);
} catch (Exception e) {
System.out.println("Error Occurred: " + e);
continue returnPoint;
}
}
输出:
0
1
2
3
Error Occurred: java.lang.NumberFormatException: For input string: "bugged"
4
另请参阅http://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html
中的ContinueWithLabelDemo