由于代码重复,我需要重构现有代码。
在疯狂的课堂中,以下结构发生了10次以上:
public MyType doSomething(...) {
MyType myType = ........
if (myType == null) {
final String message = "...";
LOGGER.error(message);
throw new XxxRuntimeException(message));
}
return myType;
}
我想将LOGGER.error
和throw new RuntimeException
行重构为这样的新方法:
private void logErrorAndThrowRuntimeException(String message) {
LOGGER.error(message);
throw new XxxRuntimeException(message));
}
问题在于重构后的if
内部没有返回值。
我无法将异常的类型从RuntimeException
更改为Exception
,因为此应用程序具有疯狂的逻辑并且需要抛出RuntimeExceptin。
有什么主意如何将这两行代码重构为一个新方法,并保持原始方法的逻辑不变?
答案 0 :(得分:2)
声明一个Throwable返回类型:
private XxxRuntimeException logErrorAndThrowRuntimeException(String message) {
LOGGER.error(message);
// You can throw here, or return if you'd prefer.
throw new XxxRuntimeException(message));
}
然后,您可以将其扔到呼叫站点以指示if主体无法正常完成:
public MyType doSomething(...) {
MyType myType = ........
if (myType == null) {
final String message = "...";
throw logErrorAndThrowRuntimeException(message);
}
return myType;
}