Java 从异常部分重构公共代码
我有下面的代码和重复的代码,所以我做了一些错误的事情,必须有更好的方法做到这一点。我在catch部分有一组通用语句。我不能把它放在finally块中,因为这些都是为异常场景而做的。除了使用单独的方法保存此代码之外,我还可以采取其他方法吗Java 从异常部分重构公共代码,java,refactoring,Java,Refactoring,我有下面的代码和重复的代码,所以我做了一些错误的事情,必须有更好的方法做到这一点。我在catch部分有一组通用语句。我不能把它放在finally块中,因为这些都是为异常场景而做的。除了使用单独的方法保存此代码之外,我还可以采取其他方法吗 public MyResponseDto doSomeWork(MyRequestDto) { .... String jsonStr = null; try { jsonStr = new ObjectMapper().writeValue
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 ;
}
这就是如何在一个catch
中捕获多个异常。剩下的你可以试试,希望对你有帮助。当然,您可以在一次捕获中放置两个以上的异常
编辑:请注意,这只适用于Java7或更高版本
这就是如何在一个catch
中捕获多个异常。剩下的你可以试试,希望对你有帮助。当然,您可以在一次捕获中放置两个以上的异常
编辑:请注意,这只适用于Java 7或更高版本如果您使用Java 7,则可以使用try multi-catch 如果您使用的是Java 7,则可以使用try multi-catch 我相信OP没有要求<7个解决方案..?不知道你的意思。。multicatch特性是从Java7开始的。在回答中提到这一点会让问题更清楚。我编辑了答案。我知道它很有用,但另一方面,当有人建议使用泛型时,他们通常不会提到它只适用于Java5或更高版本,对吗?:)一般来说,一个catch中的异常不能在同一个继承树中,所以不能。IOException必须在单独的catch中,并且必须在其他两个catch之后,否则您将gt一个编译器错误是的,它将:)特别是因为您处理它们都是相同的,所以不需要知道哪个特定的异常被抛出我相信OP不要求<7个解决方案..?不确定您的意思。。multicatch特性是从Java7开始的。在回答中提到这一点会让问题更清楚。我编辑了答案。我知道它很有用,但另一方面,当有人建议使用泛型时,他们通常不会提到它只适用于Java5或更高版本,对吗?:)一般来说,一个catch中的异常不能在同一个继承树中,所以不能。IOException必须在单独的catch中,并且必须在其他两个catch之后,否则您将gt一个编译器错误Yes it will:)特别是因为您处理它们都是相同的,所以不需要知道哪个特定的异常是通过多重异常捕获的?无论如何,创建一个方法有什么不对?多异常捕获?无论如何,制定一个方法有什么不对?
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 ;
}