`
bracling
  • 浏览: 4878 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于系统中异常的处理

    博客分类:
  • java
阅读更多
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捕获所有异常,如此,一旦发现异常信息,可以直接跳转到指定错误页面!
分享到:
评论

相关推荐

    金融系统常用异常处理

    金融系统异常处理是确保金融服务稳定性和安全性的重要环节。在金融行业中,系统异常可能涉及到交易中断、数据丢失、安全漏洞等问题,这些都会对金融机构的声誉、客户信任度以及法律法规合规性产生严重影响。因此,...

    实时操作系统VxWorks下的异常处理

    异常处理机制在 VxWorks 操作系统中扮演着关键角色,因为 VxWorks 操作系统广泛应用于嵌入式实时系统中,而这些系统很难进行人工干预。 在 VxWorks 操作系统中,异常处理机制可以分为五个阶段:异常的产生、触发、...

    异常处理 异常处理 异常处理

    异常处理是编程中的一种机制,用于捕获和处理运行时发生的错误或异常情况。异常可以由硬件引发,如硬件异常,也可以由操作系统或应用程序自身触发,即软件异常。当异常发生时,操作系统允许程序有机会检查异常类型并...

    工作流系统异常处理实现方法

    在工作流异常处理中加入工作流过程的事务特征是相当必要的,这主要包括基本活动的状态转换和子过程的事务特征。为了方便于分析,本文不再区分子过程(Subprocess)与模块(Block)的不同,并且认为事务块...

    浅淡Win32 系统级异常处理机制

    ### Win32 系统级异常处理机制(S.E.H) #### 引言 在深入探讨Win32系统级异常处理机制(S.E.H)之前,有必要先了解这一机制的重要性和独特之处。S.E.H(Structured Exception Handling)是Windows操作系统中用于...

    易语言线程结构异常处理

    "指针到EXCEPTION_RECORD结构,指针到CONTEXT结构"是Windows操作系统中的异常处理概念。EXCEPTION_RECORD结构包含了关于异常的所有信息,包括异常代码、异常地址等;而CONTEXT结构则保存了处理器的状态信息,如寄存器...

    基于ARM的嵌入式系统程序开发要点(四)——异常处理机制的设计

    在基于ARM架构的嵌入式系统开发过程中,异常处理机制的设计是确保系统稳定性和可靠性的关键因素之一。本文将围绕异常处理机制进行深入探讨,包括但不限于ARM处理器中的异常类型、异常响应过程以及如何设计高效的异常...

    异常处理.ppt异常处理.ppt异常处理.ppt异常处理.ppt异常处理.ppt

    【异常处理】是编程中必不可少的一个环节,尤其是在Java这样的面向对象语言中。异常处理机制使得程序在遇到错误时能够优雅地中断执行流程,提供错误信息,并有机会进行恢复操作,而不是简单地崩溃。以下是对异常处理...

    实时操作系统Vxworks下的异常处理

    在Vxworks这样的实时操作系统中,有效的异常处理机制对于保持系统的稳定性和可靠性至关重要。通过对异常的深入分析以及灵活运用不同的处理方式,可以大大提高系统的健壮性和可用性。通过理解异常产生的原因、捕获...

    计算机系统中的特权指令系统与异常中断处理技术解析

    文章深入浅出地讲解了特权指令系统在异常处理、中断响应、内存管理等方面的关键技术和工作机制。特别是在异常处理方面,文中提到了异常的发生原因、异常处理的完整流程、异常嵌套的处理方式等。此外,还重点介绍了...

    ADS异常处理.pptADS异常处理.pptADS异常处理.ppt

    异常处理是嵌入式系统中至关重要的部分,特别是在基于ARM架构的系统中。本文将深入探讨ARM处理器的异常处理机制,包括异常类型、处理流程、异常优先级以及向量表等内容。 一、异常类型 ARM处理器支持多种类型的异常...

    智能电网:电力系统综合自动化异常处理方法

    #### 一、综合自动化站系统异常处理的一般原则 在电力系统综合自动化中,确保系统的稳定性和可靠性至关重要。由于核心部件通常采用双机双网的冗余设计,在系统某个局部出现故障时,整个系统的运行一般不会受到影响...

    易语言HOOK异常处理

    "New_SE_Handler"可能是一个新的结构化异常处理程序,结构化异常处理(SEH)是Windows操作系统中的一个特性,用于处理硬件和软件异常。 "GetSeAddr"可能是获取异常发生时的地址函数,这对于分析异常原因和定位问题...

    详解SpringCloud Finchley Gateway 统一异常处理

    SpringCloud Finchley Gateway 统一异常处理是指在使用 SpringCloud Finchley 版本的 Gateway 时,如何统一处理系统级异常的方法。默认情况下,SpringCloud Gateway 会返回 HTML 格式的错误页面,而不是我们期望的 ...

    ARM处理器异常处理步骤

    异常处理在ARM架构中有着严格和细致的步骤,以确保系统能够及时准确地响应并处理各种异常。 ARM处理器有多种工作状态,主要分为ARM状态和Thumb状态。ARM状态执行的是32位的字对齐ARM指令,而Thumb状态执行的是16位...

    J2EE项目中统一异常处理源码

    5. 异常的封装与日志记录:在统一异常处理中,通常会将捕获的异常封装成一个包含异常类型、异常消息、堆栈跟踪等信息的对象,然后记录到日志中。这不仅有助于开发者在出现问题时快速定位,也是系统监控和性能优化的...

    c/vc++/MFC异常处理/结构化异常处理 浅析

    本篇文章将深入浅析C、C++中的异常处理机制以及MFC中的异常处理策略。 首先,我们来看C语言的异常处理。C语言本身并不直接支持异常处理,但可以通过返回错误码或者设置全局变量的方式进行错误处理。这种方式称为...

    异常处理流程图Exception

    在IT领域,特别是软件开发过程中,异常处理是确保程序健壮性和用户友好...对于复杂的系统而言,构建一套全面且细致的异常处理策略至关重要,这包括对各种可能的异常情况进行充分考虑,并为每种异常提供恰当的处理逻辑。

    异常处理及日志记录

    在MVC中,异常处理通常涉及以下方面: - **全局异常处理**: 通过创建一个全局异常过滤器,可以确保所有未被捕获的异常都能得到妥善处理。这可以通过实现`IExceptionFilter`接口或继承`ExceptionFilterAttribute`...

Global site tag (gtag.js) - Google Analytics