我是 Java 新手,我正在研究异常处理。当我们捕获java异常时,我们声明并使用类Object
的一个Exception
而不初始化它,即
catch(NullPointerException e)
e.printStackTrace();
所以我的问题是,我们如何在不实例化的情况下使用对象引用 e?
我是 Java 新手,我正在研究异常处理。当我们捕获java异常时,我们声明并使用类Object
的一个Exception
而不初始化它,即
catch(NullPointerException e)
e.printStackTrace();
所以我的问题是,我们如何在不实例化的情况下使用对象引用 e?
它们被很好地实例化:
void example() {
throw new UnsupportedOperationException("message");
} // ^^^
void demonstration() {
try {
example();
} catch (UnsupportedOperationException e) {
e.printStackTrace();
}
}
这个非常简单的例子应该很容易解释......
throw
当语句发生错误时(通常)会实例化异常。例如,
throw new NullPointerException();
(请注意,这只是一个示例。通常不会在您自己的代码中显式抛出 NPE。)
该catch
子句类似于声明参数的函数。考虑函数
void func(String s) {
// ...
}
func
不实例化s
. 在String
其他地方创建并传递给函数。以同样的方式,我们创建一个异常,throw
并将其“传递”到catch
类似于参数的子句。
是的,参考e
是catch(NullPointerException e)
针对使用代码中可能引发的异常throw new NullPointerException("some error message");
异常被实例化。它发生在类内部,可能会引发异常。供您参考,关键字 throw 负责创建和抛出异常。您的 catch 方法将捕获异常。您还可以使用此关键字实现自己的异常。