Терминология Java: почему ошибка времени компиляции, а не исключение времени компиляции? - PullRequest
7 голосов
/ 22 мая 2010

Это может звучать неловко ...
Но я этого не понял.

Почему у нас compile-time error, а не compile-time exception в Java?

Я хочу сказать, что мы никогда не говорим compile-time exception.
Мы склонны говорить это как compile-time error.

Есть ли какая-то конкретная причина для того же ??
Любые предложения приветствуются ....

Спасибо!

Ответы [ 6 ]

10 голосов
/ 22 мая 2010

Причина этого в том, что во время выполнения программы возникает исключение. В Java есть специальный тип для этого, класс Exception.

Во время компиляции ваш код не выполняется, поэтому он не может выдать исключение. В самом деле, компилятор правильно находит ошибки в вашем коде - конечно, не исключение!

4 голосов
/ 22 мая 2010

Исключение в Java действительно отличается от ошибки компиляции.У нас нет исключения для времени компиляции.Потому что исключение - это то, что случается, что вы не ожидаете, что это произойдет.Мы только отметили и сняли флажок исключения.За проверенным исключением, во время компиляции , компилятор заставит вас его перехватить, но это , а не ошибка .Не поймите это, вы не можете скомпилировать программу, но это не ошибка компиляции.

3 голосов
/ 22 мая 2010

Ошибка указывает на наличие проблемы с программой. исключение - это специальная конструкция, которая прерывает поток управления программы и разматывает стек, собирая информацию о состоянии стека, чтобы о ней можно было сообщить.

Исключение можно использовать для обозначения ошибки, но не всегда. Например:

void startOperation() {
 try {
  while (someComplexOperationIsOnGoing()) {
   checkRestart();
  }
 }
 catch (RestartException re) {
  startOperation();
 }
}

void checkRestart() {
 if (shouldRestart()) {
  throw new RestartException();
 }
}

Этот неполный пример кода предназначен для демонстрации случая, когда исключение не является ошибкой. Это не всегда лучшая практика; но он используется в некоторых случаях, когда целью является прерывание потока управления глубоко в программе (например, перенаправление страницы в веб-структуре при ответе на запрос HTTP) и возврат управления на более высокий уровень стека. , Термин исключение относится к механизму, прерывающему программу.

В Java есть класс Exception , который инкапсулирует это поведение. Класс Error также прерывает поток управления так же, как и исключение; но он зарезервирован только для серьезных, неисправимых проблем, возникающих во время выполнения Он используется, например, когда JVM не хватает памяти и не может создавать новые объекты.

2 голосов
/ 22 мая 2010

Исключение - это нечто большее из неожиданного потока, который может быть обработан. Ошибка времени компиляции больше похожа на неверный код .. поэтому код даже не компилируется .. Отсюда и термин «ошибка», поскольку он обозначает более серьезную проблему, которую необходимо исправить.

1 голос
/ 22 мая 2010

Ошибки времени компиляции являются результатом невозможности создания программного обеспечения в соответствии с инструкциями. Например:

String myString = new ButtonEvent();

- ошибка времени компиляции. Исключением является то, что ловится во время обработки программного обеспечения.

try{
    while( file.readNextLine() != file.EOF ){
    }
}
catch( UnopenedException ex ){
}

Здесь мы сделали предположение, что файл мог быть правильно открыт и был. Исключение составляют те «исключительные» случаи, когда открытие файла не происходило.

0 голосов
/ 22 мая 2010

Исключением является конкретное имя для ошибки, которая может быть обработана в логике вашего программного обеспечения. Ошибка - просто опечатка или просто неправильный код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...