Исключение созданного объекта - PullRequest
2 голосов
/ 08 июля 2011

Я новичок в Java. Я читал Java с сайта Sun. Это говорит,

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

Мой вопрос,

  1. Кто создает этот объект исключения?
  2. Создан ли он в куче, поскольку он называется объектом исключения?

РЕДАКТИРОВАТЬ: I didn't understand this term "When an error occurs within a method, method creates an object' ?"

Спасибо.

Ответы [ 3 ]

4 голосов
/ 08 июля 2011
  1. Объект исключения создается:
    • вы или метод, который вы вызываете в используемой вами библиотеке, по throw new SomeException()
    • jvm в некоторых случаях (NullPointerException, проблемы с размером массива и т. Д.)
  2. Как и каждый объект, он хранится в куче
0 голосов
/ 08 июля 2011

Ваш Java-код работает на виртуальной машине;происходит нечто большее, чем просто код, который вы пишете.Java SDK генерирует исключения.

Обработка исключений выполняется таким образом, что линейное выполнение кода прерывается, и вместо этого запускается поток исключений. Поток исключений в основном является исключением, «генерируемым» до некоторой конструкции ».перехватывает 'it.

    try {

       ... some code is executed 
       ... some code throws exception (throw new Exception())
       ... some more code is never executed
    } catch(Exception e) { // CATCHES
       // code executed in case exception is caught
    } finally {
      // code that runs regardless of above exceptions
    }

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

public void doSomeWork(..) throws Exception {

}

, и исключение может быть перехвачено в другом месте, то есть вышев логике.Исключениями также являются обычные объекты, и подклассы (более мелкие детали) могут быть обнаружены перед суперклассами и т. Д.

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

0 голосов
/ 08 июля 2011

По сути, вы создаете его.

throw new Exception(); // notice the new

Как и любой объект Java, он размещается в куче JVM.

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