我有重复代码的代码,所以我做错了,必须有更好的方法。我在catch部分有一套共同的陈述。我不能把它放在finally块中,因为这些仅针对异常场景。除了制作单独的方法来保存此代码之外,还有其他方法可以采取吗?
public MyResponseDto doSomeWork(MyRequestDto) {
....
String jsonStr = null;
try {
jsonStr = new ObjectMapper().writeValueAsString(MyRequestDto);
} catch (JsonGenerationException e) {
log.error(e.getMessage());
myResponseDto .setWorkDone(false);
myResponseDto .setErrorMessage(e.getMessage());
return myResponseDto ;
} catch (JsonMappingException e) {
log.error(e.getMessage());
myResponseDto .setWorkDone(false);
myResponseDto .setErrorMessage(e.getMessage());
return myResponseDto ;
} catch (IOException e) {
log.error(e.getMessage());
myResponseDto .setWorkDone(false);
myResponseDto .setErrorMessage(e.getMessage());
return myResponseDto ;
}
myResponseDto = postWorkRequest(jsonStr);
return myResponseDto ;
}
答案 0 :(得分:4)
public MyResponseDto doSomeWork(MyRequestDto) {
....
String jsonStr = null;
try {
jsonStr = new ObjectMapper().writeValueAsString(MyRequestDto);
} catch (JsonGenerationException | JsonMappingException e) {
log.error(e.getMessage());
myResponseDto .setWorkDone(false);
myResponseDto .setErrorMessage(e.getMessage());
return myResponseDto ;
}
myResponseDto = postWorkRequest(jsonStr);
return myResponseDto ;
}
这是您在一个catch
中捕获多个例外的方法。你可以尝试其余的,希望有所帮助。当然,你可以在一个捕获中放置2个以上的异常!
编辑:请注意,这仅适用于Java 7或更新版
答案 1 :(得分:2)
如果您使用的是Java 7,则可以使用try-multi catch。 https://docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html