2016-02-26 3 views
0

Я использую Eclipse IDE для разработчиков яваПочему компиляторы не могут обрабатывать недостижимый код?

EDIT: я должен иметь в виду только eclispe IDE как другие компиляторы для разных языков дать только Варинга и может обрабатывать код

Я понимаю, что приведет к эта ошибка (недостижимый код), но почему существует ли это как ошибка, а не предупреждение? Что это в компиляторе, который не может обрабатывать недостижимый код?

Unreachable code: error or warning? Я видел этот вопрос, но он не отвечает, почему компилятор не может справиться с недостижимым и почему он должен дать ошибку.

Из чего я думаю, что он может скомпилировать его и просто никогда не достигнет кода в скомпилированной программе, но, очевидно, компиляторы (я использую eclipse для java) не разрешаю.

+0

Java - это язык, который многие люди учатся сначала, по крайней мере в наши дни. Возможно, дизайнеры имели это в виду и решили ограничить людей от недостижимого кода, даже если это не повредит. Можете также научить этих программистов-новичков не иметь недостижимого кода. Новички, возможно, склонны игнорировать предупреждения, так как они так рады закончить свою задачу/проект. – Gendarme

+0

Ваш вопрос, похоже, основан на ложных предположениях. Если вы посмотрите на [этот вопрос] (http://stackoverflow.com/questions/30457156/why-unreachable-code-isnt-an-error-in-c), вы увидите, что действительно в C/C++ мертвый код является предупреждение, и компилятор способен справиться с этим. (Обращение здесь означает либо устранить его, либо проигнорировать) – Anedar

+0

BTW это дизайнерское решение, а не техническое; не то, что компилятор «не может справиться с этим», так это то, что конструкция компилятора Java пытается избежать предупреждений вообще, поскольку пользователь обычно игнорирует их. Перед введением дженериков вообще никаких предупреждений не было. Теперь он выдает некоторые предупреждения, если семантика дженериков игнорируется. – OscarRyz

ответ

0

Проще говоря, если они не могут, это потому, что они были разработаны не для того.

Большинство согласен, что это должно просто быть предупреждением. Причина, по которой Java не рассматривает это как предупреждение, состоит в том, что он был спроектирован как ошибка. Из Java Language Specification for J7SE:

«Это ошибка времени компиляции, если оператор не может быть выполнено, так как он недостижим

Некоторые языки только бросить предупреждения (то есть, C#), но Java был разработан в противном случае.

+1

Следует отметить, что Eclipse позволяет вам настроить это как предупреждение вместо ошибки, если вы так склонны. Я не рекомендую, но это возможно. Таким образом, компилятор * может * «обрабатывать» его. –

Смежные вопросы