• 异常处理


    异常处理步骤:
    1、将异常转换为非强制捕获型异常
    2、将异常向上抛出,作统一处理
    3、给用户做出友好提示并通知管理员

    自定义异常使得该异常继承自RuntimeException,重写该异常中的构造方法,带参数和不带参数的方法都要写
    public class DataAccessException extends RuntimeException {

    private static final long serialVersionUID = 1L;

    / DateAccessException无参数的构造方法 /
    public DataAccessException() {
    super();
    }
    / DataAccessException有Message参数的构造方法,用来当依然发生的时候要写的值 /
    public DataAccessException(String message) {
    super(message);
    }
    / DataAccessException有Message和Throwable接口作为参数的构造方法*/
    public DataAccessException(String message, Throwable cause) {
    super(message, cause);
    }
    / DataAccessException中Throwable作为参数的构造方法*/
    public DataAccessException(Throwable cause) {
    super(cause);
    }
    }
    在DbHelp中原本e.printStackTrace()改写成throw new DataAccessException(message,e);
    这样的话,当发生异常的时候就会在用户访问的页面留下异常的错误信息,这时候要友好的显示异常错误信息,并将异常通知给管理员。

    配置错误页
    根据http code值来配置错误页
    <error-page>
    <error-code>500</error-code>
    <locations>/WEB-INF/views/error/500.jsp</locations>
    </error-page>
    根据异常来配置错误页
    <error-page>
    <exception-type>DataAccessException</exception-type>
    <locations>/WEB-INF/views/error/dataaccessexception.jsp</locati
    ons>
    </error-page>
    当既是500又是dataaccessexception的时候就会找更具体的错误,显示DataAccessException.jsp,而不会显示500.jsp

    错误页
    在errorpage页面的page指令中声明isErrorPage = true;在这个页面就刻意使用JSP的一个内置对象Exception,这个内置对象只有在isErrorPage的属性为true的时候才能使用。
    错误页内容
    <%@ page language="java" import="java.util. " isErrorPage="true" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML>
    <html>
    <head>
    <title>500 page</title>
    </head>
    <body>
    <%
    //这段代码在IDE中会被标记为deadcode,加上这句会增加程序的健壮性,防止当程序员忘记在指令中添加isErrorPage属性
    Throwable th = null;
    if(exception!= null){
    th = exception;
    }
    if(request.getAttribute("javax.servlet.error.exception") != null){
    th = (Throwable)request.getAttribute("javax.servlet.error.exception");
    }
    if(th!= null){
    out.print(th.getMessage());
    }
    %>
    服务器忙,请稍后!
    </body>
    </html>


    javax.servlet.error.status_code:  Integer HTTP协议的状态代码
    javax.servlet.error.exception_type: Class 未捕获异常的Class类的对象
    javax.servlet.error.message: String 传递给sendError()方法的消息
    javax.servlet.error.exception: Throwable 调用错误页面的未捕获异常
    javax.servlet.error.request_uri: String 当前请求的URI
    javax.servlet.error.servlet_name: String 导致错误页面被调用的Servlet的名字

  • 相关阅读:
    《PHP程序员面试笔试宝典》——如何回答非技术性问题?
    《PHP程序员面试笔试宝典》——如何回答技术性的问题?
    《PHP程序员面试笔试宝典》——如何巧妙地回答面试官的问题?
    我的新书——《PHP程序员面试笔试宝典》
    小程序"errcode":41002错误问题如何解决?
    Apache虚拟主机的搭建及相关问题解决
    PHP面试题详解
    Mysql的基本操作知识
    图片压缩
    JS点击复制
  • 原文地址:https://www.cnblogs.com/shininguang/p/4922842.html
Copyright © 2020-2023  润新知