跳转到内容

未检查异常

75% developed
来自维基教科书,开放世界中的开放书籍

导航 异常 主题:v  d  e )


未检查、未捕获或运行时异常是可以在未被捕获或声明的情况下抛出的异常。

Example 代码部分 6.12:在不声明或捕获的情况下抛出异常。
public void futureMethod() {
  throw new RuntimeException("This method is not yet implemented");
}

...但是,您仍然可以声明和捕获此类异常。运行时异常不是业务异常。它们通常与硬编码问题有关,例如数据错误、算术溢出、除以零等。换句话说,无法规避或预测的错误。最著名(也是最可怕的)运行时异常是 NullPointerException

运行时异常必须是 RuntimeException 类或 Error 类的子类,或者继承自它们。

有时为了记录目的,希望捕获所有异常,然后重新抛出它们。例如,在 servlet 编程中,当应用程序服务器调用服务器 getLastModified() 时,我们希望监控请求服务期间是否发生任何异常。应用程序拥有自己的日志记录,独立于服务器日志记录,因此运行时异常将直接通过,而不会被应用程序检测到。以下代码检查所有异常,记录它们并重新抛出它们。

Example 代码部分 6.13:记录异常。
public long getLastModified(HttpServletRequest req) {
  try {
    ...
    return getTimeStamp();
    ...
  } catch(RuntimeException e) {
    log.error("Error during handling post request", e);

    throw e;
  }
}

在上面的代码中,所有业务逻辑异常都在 getTimeStamp() 方法中处理。运行时异常被捕获以进行记录,然后重新抛出到服务器以进行处理。


Clipboard

待办事项
添加一些类似于 变量 中的练习


华夏公益教科书