2013-12-11 11 views
2

Как JVM получает информацию о том, какой тип исключения имеет место, а затем показывает, какой тип исключения он есть, а также какой поток используется JVM для информирования нас.Как JVM проверяет, какой тип исключения произошел в программе?

+0

Вы имеете в виду, как он генерирует трассировку стека? Или как выбрасываются исключения? Не могли бы вы привести пример того, что вы имеете в виду: –

+0

sir в следующей программе JVM show Exception --------- public static void main (String [] args) { String s = "1"; int a = Integer.parseInt (s); } ------- как JVM получает информацию о том, что существует исключение в потоке «main» java.lang.NumberFormatException: Для входной строки: "а" \t на java.lang.NumberFormatException.forInputString (NumberFormatException.java:65) \t на java.lang.Integer.parseInt (Integer.java:492) \t в java.lang. Integer.parseInt (Integer.java:527) \t at javaapplication3.JavaApplication3.main (JavaApplication3.java:28) Java Результат: 1 –

ответ

0

Программист может броситьисключение используя throw заявление. байткод использует опкодаathrow:

ObjectRef должен быть ссылка типа и должен относиться к объекту , который является экземпляром класса Throwable или подкласса Throwable. Выталкивается из стека операндов. Затем objectref вызывается , ища текущий метод (§2.6) для первого обработчика исключений , который соответствует классу objectref, заданному алгоритмом в §2.10.

Если найден обработчик исключений, который соответствует objectref, он содержит местоположение кода, предназначенного для обработки этого исключения. Регистр pc сбрасывается в это место, стек операнда текущего кадра очищается, objectref отбрасывается обратно в стек операнда, а выполнение продолжается.

См. 2.10. Exception от JLS, чтобы лучше понимать исключения.

0

Существует 2 типа исключений: проверено и не отмечено.

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

Непроверенные исключения - это исключения, которые не должны быть пойманы. Это подклассы «RuntimeException».

JVM может вызывать RuntimeException, такие как OutOfMemoryException или NullPointerExeception.

Но некоторые фреймворки или вы можете явно исключать исключение (проверено или не проверено, зависит от ваших потребностей).

0

Java Developer определяет функцию для исключения исключений по некоторым критериям, как в FileNotFound Exception. Исключением для этого являются исключения Runtime, которые могут возникнуть в любом месте, например, код. NPE.

Если вышло исключение, оно больше не будет распространяться, что означает, что вы должны его обрабатывать. Если вы не поймаете Исключение, тогда он просто будет распространяться на его родительскую функцию вызова. Этот процесс будет продолжаться до метода main(). Если даже main() не справляется с этим, JVM просто отключится.

Также нет отдельной ветви отчетности. Тот же основной поток, который выполняет код, заботится об обработке Исключения.

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