异常创建了Object

时间:2011-07-08 13:00:45

标签: java exception-handling

我是java的新手。我正在从sun网站上阅读java。它说,

当方法中发生错误时,该方法会创建一个对象并将其交给运行时系统。该对象称为异常对象,包含有关错误的信息,包括错误发生时的类型和程序状态。

我的问题是,

  1. 谁创建此异常对象?
  2. 是否在堆上创建,因为它被称为异常对象?
  3. 编辑: I didn't understand this term "When an error occurs within a method, method creates an object' ?"

    感谢。

3 个答案:

答案 0 :(得分:4)

  1. 异常对象由以下人员创建:
    • 您或您在throw new SomeException()
    • 使用的库中调用的方法
    • 在某些情况下jvm(NullPointerException,数组大小问题等)
  2. 作为存储在堆中的每个对象

答案 1 :(得分:0)

基本上,你创建它。

throw new Exception(); // notice the new

与任何Java对象一样,它在JVM堆上分配。

答案 2 :(得分:0)

您的Java代码在虚拟机上运行;还有更多的事情发生在你正在写的代码上。 Java SDK会抛出异常。

异常处理是以这样一种方式完成的,即代码的线性执行被中断,异常流程也会被激活。异常流程基本上是被抛出的异常,直到一些构造“捕获”它。

    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设置一些内存管理参数,但这些参数的性质通常不会反映在您的代码中。