該代碼塊的結果是什麼
private static void m20() {
final List<String> list = Arrays.asList("1", "2", "3");
for (String s : list) {
Map<String, String> params = null;
try {
// 模擬調用微服務,並返回結果
params = getStringStringMap(s, params);
if (params == null) {
continue;
}
} catch (Exception e) {
System.err.println("異常");
}
System.out.println(params.get("1"));
}
}
private static Map<String, String> getStringStringMap(String s, Map<String, String> params) {
if ("1".equals(s)) {
params.get("");
} else {
params = new HashMap<>(1);
params.put(s, s);
}
return params;
}
結果
結論
1.當異常發生時該段代碼塊跳過判斷中的continue;
2.不要把continue放在攔截異常的外部;
3.catch的代碼塊儘可能小;
4.禁止循環調用微服務,切記切記;