我使用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