7

我是 Java 新手,我正在研究异常处理。当我们捕获java异常时,我们声明并使用类Object的一个Exception而不初始化它,即

catch(NullPointerException e)
    e.printStackTrace();

所以我的问题是,我们如何在不实例化的情况下使用对象引用 e?

4

4 回答 4

8

它们被很好地实例化:

void example() {
    throw new UnsupportedOperationException("message");
}      // ^^^

void demonstration() {
    try {
       example();
    } catch (UnsupportedOperationException e) {
        e.printStackTrace();
    }
}

这个非常简单的例子应该很容易解释......

于 2013-06-11T21:39:17.887 回答
1

throw当语句发生错误时(通常)会实例化异常。例如,

throw new NullPointerException();

(请注意,这只是一个示例。通常不会在您自己的代码中显式抛出 NPE。)

catch子句类似于声明参数的函数。考虑函数

void func(String s) {
    // ...
}

func不实例化s. 在String其他地方创建并传递给函数。以同样的方式,我们创建一个异常,throw并将其“传递”到catch类似于参数的子句。

于 2013-06-11T21:38:37.943 回答
0

是的,参考ecatch(NullPointerException e)针对使用代码中可能引发的异常throw new NullPointerException("some error message");

于 2015-06-08T11:54:07.447 回答
0

异常被实例化。它发生在类内部,可能会引发异常。供您参考,关键字 throw 负责创建和抛出异常。您的 catch 方法将捕获异常。您还可以使用此关键字实现自己的异常。

于 2017-09-22T02:13:27.770 回答