Я использую 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
.)
Затмение подчеркивает последний return мертвый код, и если я удалю его как подсказку, я и выше с помощью «Этот метод должен возвращать результат ошибки типа String».
Почему последний код возврата мертвый? Это из-за класса? Скажем, что doSomething()
может вернуть значение null, если вы его произнесете, это приведет к исключению класса cast?
И почему Eclipse предлагает исправить ошибку с чем-то, что приводит к ошибке предупреждение? Это потому, что Eclipse не может предсказать это?
Удалите 'return '" 'из блока' catch'. Имейте в виду, 'someMethod' исключает' String', но вы пытаетесь вернуть 'MyInterface' ... похоже, что у вас больше проблем – MadProgrammer
Действительно извините за эту ошибку, она возвращает строку. Исправлено сейчас :) – eivamu
Что-то совсем другое: мне нравится ваш логотип! – Seelenvirtuose