JSP 中的异常处理

JSP中的异常是什么?

JSP中的异常是在代码中发生错误时出现的,这些错误可能由开发人员引起,也可能是系统内部错误。JSP中的异常处理与Java相同,使用Try Catch块进行管理。与Java不同的是,JSP中即使代码没有错误也可能发生异常。

JSP中的异常类型

JSP中的异常有三种类型

  1. 已检查异常
  2. 运行时异常
  3. 错误异常

已检查异常

通常,用户错误或开发人员未预见的问题被称为已检查异常。一些已检查异常的例子包括:

  1. FileNotFoundException:这是一个已检查异常(当在磁盘上找不到文件时尝试查找文件)。
  2. IOException:这也是一个已检查异常,如果在读取或写入文件时发生任何异常,就会引发IOException。
  3. SQLException:这也是一个已检查异常,当文件与SQL数据库连接时,如果SQL数据库连接出现问题,就会引发SQLException。

运行时异常

运行时异常是可以被程序员避免的。在编译时会被忽略。一些运行时异常的例子包括:

  1. ArrayIndexOutOfBoundsException:这是一个运行时异常,当数组大小超出元素时发生。
  2. ArithmeticException:这也是一个运行时异常,当执行任何不被正常条件允许的数学运算时(例如,将数字除以0会引发异常)。
  3. NullPointer Exception:这也是一个运行时异常,当尝试访问一个为null的变量或对象时引发。这是一个非常常见的异常。

错误

问题是由于用户或程序员的控制引起的。如果堆栈溢出,则可能发生错误。下面列出了一些错误示例:

  1. Error:这个错误是Throwable类的一个子类,表示应用程序无法捕获的严重问题。
  2. Instantiation Error:当尝试实例化一个对象但失败时,就会发生此错误。
  3. Internal Error:当Java虚拟机(JVM)发生错误时,就会发生此错误。

错误异常

它是Throwable类的一个实例,用于错误页面。Throwable类的一些方法包括:

  • Public String getMessage() – 返回异常的消息。
  • Public throwablegetCause() – 返回异常的原因。
  • Public printStackTrace()– 返回异常的堆栈跟踪。

如何在JSP中处理异常

以下是如何在JSP中处理异常的示例:

Exception_example.jsp

<%@ page errorPage="guru_error.jsp" %>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Exception Guru JSP1</title>
</head>
<body>
<% 
 int num = 10;
   if (num == 10)
   {
      throw new RuntimeException("Error condition!!!");
   }
 %>
   </body>
</html>

Guru_error.jsp

<%@ page isErrorPage="true" %>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Exception Page</title>
</head>
<body>
<p>Guru Exception has occurred</p>
<% exception.printStackTrace(response.getWriter()); %>
</body>
</html>

代码解释

Exception_example.jsp

第1行代码:在这里,我们将错误页面设置为guru_error.jsp,当发生错误时将重定向到此页面。

第15行代码:我们声明一个变量num并将其设置为10,然后检查一个条件,如果num为10,则抛出一个运行时异常,消息为“Error Condition”。

Guru_error.jsp

第1行代码:在这里,我们将isErrorPage属性设置为true。

第12行代码:在exception_example.jsp中,我们使用throw对象抛出了异常,并且由于isErrorPage属性被标记为true,该异常将在此时显示。使用exception(这是一个允许JSP访问异常数据的对象)对象,我们尝试打印在exception_example.jsp中发生的错误的堆栈跟踪。

当您执行上述代码时,您会得到以下输出

Handle Exception in JSP

输出

异常已被抛出,该异常是从exception_example.jsp使用运行时异常的throw对象抛出的,我们得到了上面的代码。此外,还调用了guru_error.jsp,并从该文件中显示了Guru Exception已发生。

摘要

  • JSP中的异常是在代码中发生错误时出现的,这些错误可能由开发人员引起,也可能是系统内部错误。
  • JSP中的异常有3种类型:已检查异常、运行时异常和错误异常。
  • 已检查异常通常是用户错误或开发人员未预见的问题。
  • 运行时异常是可以被程序员避免的。在编译时会被忽略。
  • 错误异常是Throwable类的一个实例,用于错误页面。