浅谈web开发中的异常。
序:
异常,估计n多人都知道,至于那些定义、分类,我就不扯了。
在web开发中,凡是过来的人都应该知道,在action层调用义务层处理后,成功执行还好,
非成功执行就得通过某种方式通知action,然后action才知道将要显示何种提示信息给用户。
说到这,那就进入今天的话题了。
正文----开整
在web开发中异常应该有两类,一类为java程序中定义的异常,即如果按照我们设想的不应该
出现的异常,而另一类就是开发中很重要的业务异常。
何为业务异常呢,先举个例子说明一下,例如在修改一个用户信息时,传递用户的年龄(age)不
应该大于其父母亲的年龄,因此在service层中必然会做一个和父母亲年龄作比较的业务判断,
一旦判断失败,在通常的处理中是返回一个标识,而我认为在业务中我们应该只关心正确流程,
也就是说整个程序没有执行失败的返回路径,作为替代,我们定义一种异常,向上层抛出,以标
识的失败,这种异常就是我们称为的业务异常。
在action层,业务异常是应该要捕获的,并提示相应的信息给用户,这样用户才知道哪里出了错。
而对于其他异常,一旦出现,普通的做法是,定义一个页面,提示:系统正忙,请稍后再试。。。
如果是使用struts2进行开发的时候,对于业务异常,可以根据相应的异常标识,使用addActionError
等,返回INPUT页面,提示用户相应的信息;对于其他异常,可以使用在struts的包中定义一个
GlobalException来捕获,然后在result中返回公共的异常处理页面,如上面提到的系统正忙页面。
下面是一个简单的ServiceException异常类。
public class ServieException
{
//异常码,标识异常,也可以是国际化资源文件中的key值
private long exceptionCode;
//异常参数,也可以是国际化资源文件中对应key标识的资源所需的参数
private String[] parameters;
//构造器
public ServiceException(long exceptionCode, String... parameters)
{
this.exceptionCode = exceptionCode;
this.parameters = parameters;
}
public long getExceptionCode()
{
return exceptionCode;
}
public void setExceptionCode(long exceptionCode)
{
this.exceptionCode = exceptionCode;
}
public String[] getParameters()
{
return parameters;
}
public void setParameters(String[] parameters)
{
this.parameters = parameters;
}
}
如果exceptionCode对应的是国际化资源文件中的key值,那么在action调用service层方法
时,一旦出现异常(ServiceException e),便可以使用如下语句
addActionError(getExceptionCode, getParameters());
return INPUT;
这样就可以把相关业务异常所代表的信息提示给用户。
注意,并不是每个action都可以定义INPUT页面的,所以在实际应用中,还应该提供一个公共
的失败页面,以供那些不能返回INPUT的页面,提示错误信息。当然,最好也提供一个公共成
功的页面,好事成双嘛。哈哈。。。
简单理解,请批评指教。
OK,打完收工
分享到:
相关推荐
文章中提到,软件项目开发离不开数据库,尤其在B/S架构下的Web开发中,数据库的交互操作必不可少。数据库的选择会根据项目的不同需求而有所差异。在众多数据库产品中,Oracle数据库因其稳定性和强大的功能常用于大型...
本文讨论了在Java Web环境中,通过引入Hashtable来简化数据库操作的方法。...综上所述,在Java Web开发过程中,使用Hashtable作为数据库操作的中间层可以带来很多优势,但需要注意合理管理资源,平衡性能与资源消耗。
【Web NMS在电力系统网络构建中的应用】 Web NMS(Web Network Management System)在网络管理系统中扮演着重要的角色,尤其在电力系统这种对网络安全性和可靠性的要求极高的领域。电力系统作为国家经济的重要组成...
SSH框架,全称为Struts+Spring+Hibernate,是Java企业级开发中常用的一种技术栈,主要用于构建基于MVC(Model-View-Controller)设计模式的Web应用。在本篇文章中,我们将深入探讨这三个组件的核心概念和进阶用法,...
在现代软件开发中,Web应用已经成为主流,而随着开发速度的加快,测试的重要性日益凸显。自动化测试框架在确保产品质量、提高测试效率方面扮演着至关重要的角色。本文将深入探讨基于Web的自动化测试框架的设计,旨在...
在课程的最后阶段,学员通常会被引导到更具体的应用领域,比如Web开发(Spring框架)、移动开发(Android)、大数据处理(Hadoop、Spark)或是云计算平台(Java on AWS)。这些进阶主题可以帮助学员找到自己感兴趣的...
在Java Web开发中,接口扮演着至关重要的角色,它们定义了一组方法,使得不同类能够以统一的方式进行交互。下面我们将深入探讨Java Web中常用的几个对象及其对应的接口实例化。 1. **Request对象**:Request对象是`...
通过上述流程可以看出,Flask作为Python Web开发的一个微框架,其源码中请求处理的过程是简洁明了的。它之所以受到许多开发者的喜爱,除了其轻量级和灵活性外,还因为其具备良好的扩展性和社区支持,使得开发者可以...
浅谈log4j 不打印异常堆栈 本文主要介绍了log4j 不打印异常堆栈的原因和解决方法,该问题在实际开发中可能会给程序员带来困扰。 知识点1: JVM 的优化机制 JVM 为了性能会做优化,如果频繁的抛出某个异常,会...
在企业安全防护体系中,渗透预警与追溯分析是至关重要的组成部分。这些机制旨在帮助企业提前发现潜在的安全威胁,及时做出响应,防止数据泄露或系统被恶意攻击。以下将详细阐述这两个概念以及它们在数据治理中的作用...
WebWork是一个历史悠久的Java Web应用程序框架,它在早期的Web开发中扮演了重要的角色,为开发者提供了强大的MVC(模型-视图-控制器)架构支持。本篇文章将深入探讨WebWork的核心概念、主要特性以及其与现代Web框架...
"浅谈Java技术学习方法.pdf" Java是一种简单易用、完全面向对象、有平台无关性、安全可靠的开发工具。自1995年正式问世以来,Java的快速发展已经让整个Web世界发生了翻天覆地的变化。Java技术和应用发展很快,在...
《浅谈软件测试计划的制定》 在软件开发过程中,软件测试是确保产品质量的关键环节,而测试计划的制定则是测试工作的重要前提。测试计划详细规定了测试的目标、方法、资源和时间表,对于保证测试的有效性和效率至关...
由于提供的【部分内容】中大部分内容均为乱码,无法从中提取出有意义的IT知识点,但是根据标题“浅谈使用***和***访问SQL Server数据库.pdf”和【描述】中的重复标题,我们可以推断出本文档的主要内容。以下将围绕**...
【Log4Net】是.NET开发环境下的日志记录工具,用于跟踪程序中的错误和异常,有助于调试和优化。它支持将日志信息输出到不同目的地,如控制台或文件,便于后期分析。 【数据库设计】在在线考试系统中,MS SQL Server...
Fetch API是现代Web开发中用于进行数据交互的重要工具,它的出现是为了替代传统的XMLHttpRequest(XHR)。Fetch以其简洁、优雅的Promise语法,使得异步数据请求变得更加直观和易于管理。本文将深入探讨Fetch API的...
Java 连接池是一种优化数据库访问效率的机制,它解决了在Web应用程序中频繁建立和释放数据库连接所导致的性能问题。随着B/S架构的广泛应用,Java应用程序通过JDBC(Java Database Connectivity)与数据库进行交互。...
异常是程序运行过程中出现的非正常情况,它允许开发者通过异常处理结构来捕获并处理这些问题,而不是让整个程序崩溃。PHP5引入了异常处理机制,以提供更灵活的错误管理方式。 **异常处理语法** 异常处理使用`try-...
虽然ASP.NET MVC提供了强大的开发灵活性,但同时也意味着开发人员需要更加关注应用程序的安全性,因为它不像ASP.NET Web Forms那样提供了许多内置的安全防护机制。 ### ASP.NET Web Forms的安全特性 在ASP.NET Web...