关于系统中异常的处理

Java应用程序开发过程中一个主要部分就是处理异常!近日在开发过程中,发觉系统处理时在出错时,总是将Java出现错误的一大堆代码抛到页面,令客户及开发人员深感不爽,现在开发主要采用有Struts框架,于是下来研究了一下关于Struts中对异常页面上的处理,再加之近日复习web.xml的配制解析,经过实践后,得出以下两种主要屏蔽客户端页面出错的问题:
一、这种方法是最直接也是比较简易的解决之法:直接在web.xml中配制异常出错时指定的跳转页面,具体如下:在标签后加上,其中有三种标签到可以设置相关参数值:,,这三种标签顺序不能进行错误,指的是系统错误代码,一般如403 - 禁止访问表示您的网站没有默认首页一般虚拟主机默认首页分别为:index.htm index.asp等,404-无法找到文件,500- 内部服务器错误出错,程序出错;表示java指定的异常信息,如如javax.ServletException或java.lang.OutOfMemoryError,或者是一个专门针对你的应用的异常。一般我设置为java.lang.Exception; 表示出错时指向的页面,注意路径中的大小写一定要完全匹配,否则虽然在web.xml可以点跟踪到该页面,但在实际跳转时会找不到该文件;比如:

500
/common/error.jsp

二、此种解决方法是在使用了Struts框架中,用Struts的异常处理原理来处理异常信息,称为显示声明异常,主要解决方法如下两种方式:
1、自定义异常类:当自定义处理异常时,要使Struts捕捉到异常信息,在Struts跳转中则必须指定抛出自定义异常类;下面举实例作说明:
(1) 自定义异常类:
package com.system.common;
public class SystemException extends Exception{
private static final long serialVersionUID = 1L;
private Throwable exception;
public SystemException(){
initCause(null);
}
public SystemException(String msg){
super(msg);
initCause(null);
}

public SystemException (Throwable thrown) {
initCause(null);
exception = thrown;
}
public SystemException (String msg, Throwable thrown) {
super(msg);
initCause(null);
exception = thrown;
}
public Throwable getException() {
return exception;
}
public Throwable getCause() {
return exception;
}
}

(2) 在Struts配制文件中设置为全局异常跳转在中加入如下:



局部配制如在action中则:







说明:key对应在application中设置的资源信息,path指异常出现后跳转到的页面,type指定异常类(可以是指定java异常如java.lang.NullPointException,也可以是自定义类,在本例中讲的是自定义类);
(3) FriendAction.java执行跳转中表示如下:
package com.powerlove;
public class FriendAction extion BaseAction{
……
public ActionForward doDefault(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request,HttpServletResponse request) throws Exception {
……
throw new SystemException();//必须指定抛出此异常,否则struts中不能捕获到以跳转,或是其它方法中抛出此异常
……
}
}
(4) Error.jsp代码如下:
<% @page language=”java” contentType=”text/htmll; charSet=utf-8”%>
…..

…..
(5) 在application.properties中配制key所对应的信息
# this is the message when error ocute
error.msg=系统繁忙,请稍后访问
这种方法处理方式就是必须在程序中抛出自定义异常,即必须有以如上Action中部分,该异常可以在调动方法或是直接action中抛出,一般我在方法中去抛出该异常,否则无论在方法之后加入throw SystemException,还是系统Exception,Struts都无法正确捕捉到自定义异常从而执行全局异常处理跳转方法!
如果要将自定义信息抛出到页面,在程序中可灵活运用ActionMessages对象完成。以此不加以详述实现过程
ActionMessages msgs = new ActionMessages();
msgs.add("msg", new ActionMessage("msg.error"));
saveMessages(re, msgs);

2、第一种是依据Struts的异常处理机制原理所进行的配制信息,还有一种方法就是如果系统不自定义异常,可以直接类似于web.xml中的配制一样,直接指明java中的异常信息,如java.lang.NullPointException,通常情况下,我在测试中直接使用的是java.lang.Exception捕获所有异常,如此,一旦发现异常信息,可以直接跳转到指定错误页面!

你可能感兴趣的:(java)