我使用Eclipse 4.3 Kepler(实际上是STS 3.6.1)。删除死代码导致错误
我碰到了一些代码:
private String someMethod(String myParam) {
try {
MyInterface myVar = (MyInterface) domeSomething(myParam);
if (myVar != null) {
return myVar.methodThatReturnsString();
}
} catch (Exception e) {
return "";
}
return ""; // eclipse marks this as dead code
}
(正如你所期望的,doSomething()
方法抛出一些异常,并返回一个接口要比MyInterface
比较一般。)
Eclipse中强调了最后返回语句为死代码,如果我删除它作为quickfix建议,我和“这种方法应该返回一个字符串类型的结果”错误。
为什么最后一个return语句无效代码?是因为班级演员?假设doSomething()
可以返回null,如果你投了它,会抛出一个类抛出异常吗?
而且,Eclipse为什么建议我修复导致死代码警告的错误?是否因为Eclipse无法预测这一点?
删除'catch'块中的'return'“'。请注意,'someMethod'除了'String',但你正在尝试返回'MyInterface' ...好像你有更大的问题 – MadProgrammer 2014-09-01 07:23:35
真的很抱歉那个错误,它确实返回一个String。现在更正:) – eivamu 2014-09-01 07:27:19
完全不同的东西:我喜欢你的标志! – Seelenvirtuose 2014-09-01 07:34:45