未检查异常
外观
< Java 编程
导航 异常 主题: ) |
未检查、未捕获或运行时异常是可以在未被捕获或声明的情况下抛出的异常。
代码部分 6.12:在不声明或捕获的情况下抛出异常。
public void futureMethod() {
throw new RuntimeException("This method is not yet implemented");
}
|
...但是,您仍然可以声明和捕获此类异常。运行时异常不是业务异常。它们通常与硬编码问题有关,例如数据错误、算术溢出、除以零等。换句话说,无法规避或预测的错误。最著名(也是最可怕的)运行时异常是 NullPointerException
。
运行时异常必须是 RuntimeException
类或 Error
类的子类,或者继承自它们。
有时为了记录目的,希望捕获所有异常,然后重新抛出它们。例如,在 servlet 编程中,当应用程序服务器调用服务器 getLastModified()
时,我们希望监控请求服务期间是否发生任何异常。应用程序拥有自己的日志记录,独立于服务器日志记录,因此运行时异常将直接通过,而不会被应用程序检测到。以下代码检查所有异常,记录它们并重新抛出它们。
代码部分 6.13:记录异常。
public long getLastModified(HttpServletRequest req) {
try {
...
return getTimeStamp();
...
} catch(RuntimeException e) {
log.error("Error during handling post request", e);
throw e;
}
}
|
在上面的代码中,所有业务逻辑异常都在 getTimeStamp()
方法中处理。运行时异常被捕获以进行记录,然后重新抛出到服务器以进行处理。