关于系统中异常的处理

Java应用程序开发过程中一个主要部分就是处理异常!近日在开发过程中,发觉系统处理时在出错时,总是将Java出现错误的一大堆代码抛到页面,令客户及开发人员深感不爽,现在开发主要采用有Struts框架,于是下来研究了一下关于Struts中对异常页面上的处理,再加之近日复习web.xml的配制解析,经过实践后,得出以下两种主要屏蔽客户端页面出错的问题:
一、这种方法是最直接也是比较简易的解决之法:直接在web.xml中配制异常出错时指定的跳转页面,具体如下:在<welcome-file-list>标签后加上<error-page>,其中有三种标签到可以设置相关参数值:<error-code>,<exception-type>,<location>这三种标签顺序不能进行错误,<error-code>指的是系统错误代码,一般如403 - 禁止访问表示您的网站没有默认首页一般虚拟主机默认首页分别为:index.htm index.asp等,404-无法找到文件,500- 内部服务器错误出错,程序出错;<exception-type>表示java指定的异常信息,如如javax.ServletException或java.lang.OutOfMemoryError,或者是一个专门针对你的应用的异常。一般我设置为java.lang.Exception;<location> 表示出错时指向的页面,注意路径中的大小写一定要完全匹配,否则虽然在web.xml可以点跟踪到该页面,但在实际跳转时会找不到该文件;比如:
<error-page>
<error-code>500</error-code>
<location>/common/error.jsp</location>
</error-page>
二、此种解决方法是在使用了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配制文件中设置为全局异常跳转在<struts-config.xml>中加入如下:
<global-exceptions>
<exception key="error.msg" path="/commons/Error.jsp" scope="request" type="com.system.SystemException " />
</global-exceptions>
局部配制如在action中则:
<action-mappings>
<action path="/friend" type="com.powerlove.FriendAction" name="friendForm" scope="request">
<forward name="go" path=" /pages/FriendForm.jsp" />
<forward name="list" path="/friends.shtml" redirect="true" />
<exception key="error.msg" path="/commons/Error.jsp" type="com.sysytem.SystemException" />
</action>
</action-mapping>
说明: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”%>
…..
<html:errors />
…..
(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中的<exception-type>配制一样,直接指明java中的异常信息,如java.lang.NullPointException,通常情况下,我在测试中直接使用的是java.lang.Exception捕获所有异常,如此,一旦发现异常信息,可以直接跳转到指定错误页面!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值