Различия между исключением и ошибкой

  1. В {рабочем пространстве-каталоге} /. Metadata / .plugins / org.eclipse.core.runtime / .settings удалите следующие два файла:

    • org.eclipse .wst.server.core.prefs
    • org.eclipse.jst.server.tomcat.core.prefs
  2. Перезапустить Eclipse

162
задан Termininja 22 January 2016 в 22:38
поделиться

6 ответов

Ошибки не следует обнаруживать или обрабатывать (за исключением самых редких случаев). Исключения - это основа обработки исключений. Javadoc хорошо это объясняет: разумное приложение не должно пытаться поймать. Большинство таких ошибок ненормальны условий.

Посмотрите на несколько подклассов Error , взяв некоторые из их комментариев JavaDoc:

  • AnnotationFormatError - Выдается, когда анализатор аннотаций пытается прочитать аннотацию из файла класса и определяет, что аннотация имеет неправильный формат.
  • AssertionError - Брошено, чтобы указать, что утверждение не удалось.
  • LinkageError - Подклассы LinkageError указывают, что класс имеет некоторую зависимость от другого класса; однако последний класс изменился несовместимо после компиляции первого класса.
  • VirtualMachineError - Выдается, чтобы указать, что виртуальная машина Java неисправна или исчерпала ресурсы, необходимые для продолжения работы.

На самом деле существует три важных подкатегории Throwable :

  • Ошибка - Произошла какая-то достаточно серьезная ошибка, поэтому большинство приложений должно аварийно завершить работу, а не пытаться решить эту проблему,
  • Непроверенное исключение (также известное как RuntimeException ) - Очень часто ошибка программирования, например NullPointerException или недопустимый аргумент. Приложения иногда могут обрабатывать эту Throwable категорию или восстанавливать ее - или, по крайней мере, ловить ее с помощью метода Thread run () , регистрировать жалобу и продолжать работу.
  • Проверенное исключение. (также известный как «Все остальное») - ожидается, что приложения будут способны улавливать и осмысленно что-то делать с остальным, например FileNotFoundException и TimeoutException ...
170
ответ дан 23 November 2019 в 21:22
поделиться

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

Пример: OutOfMemoryError - Вы мало что можете сделать, поскольку ваша программа больше не может работать.

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

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

Это упрощенные примеры, и есть еще много информации только об исключениях.

17
ответ дан 23 November 2019 в 21:22
поделиться

Sun говорит лучше всего :

Ошибка является подклассом Throwable это указывает на серьезные проблемы, которые разумное приложение не следует пытаться поймать.

7
ответ дан 23 November 2019 в 21:22
поделиться

Описание класса Error довольно ясно:

Ошибка является подклассом Throwable это указывает на серьезные проблемы, которые разумное приложение не следует пытаться ловить. Большинство таких ошибок ненормальные условия. ThreadDeath ошибка, хотя и является «нормальным» состоянием, также подкласс Ошибка , потому что большинство приложения не должны пытаться поймать это.

Метод не требуется объявлять в его предложение throws любые подклассы Ошибка , которая могла возникнуть во время выполнение метода, но не пойманы, так как эти ошибки ненормальные условия, которые никогда не должны

Цитируется из собственной документации Java класса Error .

Короче говоря, вы не должны обнаруживать Error s, за исключением того, что у вас есть веская причина для Сделай так. (Например, чтобы предотвратить сбой вашей реализации веб-сервера, если сервлету не хватает памяти или что-то в этом роде.)

Исключение , с другой стороны, является обычным исключением, как и любое другое другой современный язык. Вы найдете подробное описание в документации по Java API или на любом онлайн- или офлайн-ресурсе.

3
ответ дан 23 November 2019 в 21:22
поделиться

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

Пример:

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

1
ответ дан 23 November 2019 в 21:22
поделиться

Вот довольно хорошее резюме из Java API, что представляют собой ошибки и исключения:

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

Метод не требуется объявлять в его предложение throws любые подклассы Ошибка, которая может возникнуть во время выполнение метода, но не пойманы, так как эти ошибки ненормальные условия, которые никогда не должны

OTOH, для Исключений, Java API говорит:

Класс Exception и его подклассы являются формой Throwable, которая указывает условия, которые разумное приложение может захотеть уловить.

0
ответ дан 23 November 2019 в 21:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: