`

web应用设计 - 异常处理

阅读更多
    每每想起自己之前所在的一个公司,代码中导出充斥着try-catch、throw 这些代码,就觉得这个公司对不起他自己的名声。

    呵呵,后来释然了,好多大公司其实代码都是从无到有的过程,只是后来想重构的时候,却发现工作量巨大,所以就放弃了。可能当时的环境,技术还没有那么纯熟,诸多因素吧,造就了今天我们觉得繁杂的代码。

    今天就把自己多年的实践经验和大家分享一下:如何在web应用设计中,少些异常捕获相关代码,多关注业务逻辑。

    我们以常见的三层设计为例,action、service、dao,看看如何在三层java代码中规避异常捕获代码。

假设我们的dao中,有一个异常,那我们直接在方法声明中抛出即可

method () throws Exception{
   // 有异常的代码
}

我们再service中也不直接处理异常,也是在方法声明中抛出异常即可。
method () throws Exception{
   // 有异常的代码
}

我们在action中的调用方法声明中抛出异常即可。
method () throws Exception{
   // 有异常的代码
}

    好吧,这样一来,是不是在我们的方法体中,没有一行处理异常的代码,这样的方法只关注业务逻辑,是不是一目了然?

    好戏还在上演:各层只管抛出异常,那究竟谁来捕获并给客户反馈呢?

    这时候,我们可以使用struts2的拦截器了。如果不会拦截器代码,请百度。

拦截器代码中,有一个方法专门关注调用的action方法,我们可以在此方法中,对调用action方法的这个操作进行try=catch捕获,然后判断异常类型。

try{
   // 执行action方法
}
catch(Exception e){
// 判断异常类型
if(e instanceOf NullPointerException){
// 根据需要,确定是否给用户提示,或者记录到异常表
}else if(e instanceOf ClassNotFoundException){
// 根据需要,确定是否给用户提示,或者记录到异常表
}else if(e instanceOf ArithmeticException){
// 根据需要,确定是否给用户提示,或者记录到异常表
}
}

    总结,上面提到的设计,关键是有一个action的拦截器,每当action的方法执行的时候,拦截器都可以知道,这就是AOP思想。
正式基于struts2提供的拦截器,让我们更好的设计异常处理。

以上是个人经验之谈,大家觉得有不合理的地方,拍砖即可。
1
1
分享到:
评论
3 楼 JUnique 2012-11-19  
理论分析还是有一定的道理的
2 楼 gds_fighting 2012-11-19  
super8090 写道
能否说的详细一些,如果使用在拦截器中拦截异常?

拦截器中不是有一句代码吗?
public String intercept(ActionInvocation invocation) throws Exception
    {
    invocation.invoke();
    }

你改造成
public String intercept(ActionInvocation invocation) throws Exception
    {
            try{
    invocation.invoke();
               }catch (Exception e){
                   if(e instanceOf NullPointerException){
                        // 自己的逻辑  
                   }
               }
    }
1 楼 super8090 2012-11-19  
能否说的详细一些,如果使用在拦截器中拦截异常?

相关推荐

    面向.NET的Web应用程序设计-微软考证

    本文将深入探讨.NET平台下的Web应用设计原理,以及如何通过微软认证来提升这些技能。 首先,我们需要理解.NET Framework的核心组成部分,包括Common Language Runtime (CLR) 和 .NET类库。CLR是.NET应用的基础,它...

    JAVA Web程序设计-3期(KC006) 11单元案例_JavaBean典型应用教学案例.doc

    ### JAVA Web程序设计-3期(KC006) 11单元案例_JavaBean典型应用教学案例 #### 学习目标与知识点概览 本案例聚焦于JavaBean技术的实际运用,尤其关注如何通过JavaBean封装数据库访问操作,旨在帮助学习者掌握以下...

    精通Eclipse Web开发--Java体系结构、工具、框架及整合应用

    - 异常处理:理解异常的分类、捕获和处理。 - 内存管理:理解垃圾回收机制和内存泄漏问题。 - 多线程编程:线程创建、同步和通信方法。 2. **Eclipse IDE**: - 安装与配置:介绍如何安装和设置Eclipse环境。 ...

    java web 课程设计 --- 网上商城系统(文档 + 代码)

    **Java Web课程设计——网上商城系统** 在Java Web开发领域,网上商城系统是一个常见...此外,还会涉及到异常处理、会话管理、安全性等高级主题。整个过程有助于提升对Java Web开发的理解,为实际工作打下坚实的基础。

    web课程设计-Java web的租房管理系统(源码+数据库).zip

    6. **异常处理**:在Web应用中如何正确地捕获和处理异常,保证系统稳定运行。 7. **用户认证与授权**:可能涉及到用户登录、权限控制等安全方面的问题。 8. **前端技术**:HTML、CSS和JavaScript的基础知识,以及...

    Java Web应用中错误和异常处理方法研究.pdf

    Java Web应用中的错误和异常处理是软件开发中至关重要的环节,它涉及到程序的稳定性和用户体验。传统的处理方式常常采用硬编码或try-catch语句,但这会增加代码的复杂性和维护难度,同时也可能引入安全隐患。本文...

    inside-asp-ney-web-api-2_inside_asp.netweapi框架揭秘_

    3. **过滤器**:过滤器是一种可重用的组件,可以应用于控制器或动作,用于执行全局或特定操作,如身份验证、授权、异常处理和日志记录。 4. **媒体类型格式化**:Web API内置支持JSON和XML格式,开发者可以轻松添加...

    spring-web和spring-webmvc_4.2.4

    8. **异常处理**:Spring MVC允许通过注解或配置来定义全局的异常处理策略,统一处理应用程序中的异常。 总的来说,`spring-web`和`springs-webmvc`这两个模块构成了Spring框架在Web开发中的基础,它们协同工作,为...

    行业分类-设备装置-基于web应用平台的异常分析方法及仿真系统.zip

    1. Web应用平台架构设计:包括前后端分离、RESTful API设计、数据库设计等。 2. 异常检测算法实现:如异常检测算法的选择与优化,以及在Web环境中的集成。 3. 实时数据分析:如何高效地处理和分析来自设备的大量实时...

    web dynpro --实例

    它的设计理念是通过组件化的方式提高开发效率和代码复用性,从而简化复杂的Web应用开发。在Web Dynpro中,开发者可以定义控制器、视图和模型,分别处理用户交互、展示数据和管理应用程序状态。 Javamail是一个Java...

    PHP WEB程序设计

    它使得开发者能够快速地编写动态网页,同时提供了丰富的功能来处理数据库、表单、会话控制等Web应用的核心任务。在"PHP WEB程序设计"这一主题中,我们将深入探讨PHP的基础概念、语法特性以及如何利用PHP进行高效且...

    毕业设计-婚庆管理web应用系统设计与实现代码

    【婚庆管理Web应用系统设计与实现】是一个典型的IT毕业设计项目,主要涵盖了Java Web开发技术,用于构建一套全面的婚庆服务管理系统。这个系统旨在提高婚庆公司的运营效率,优化业务流程,提供便捷的客户管理和活动...

    Java Web应用中常见的错误和异常问题处理.pdf

    综上所述,Java Web应用的错误和异常处理涉及到多层架构模型的应用、异常处理原则的理解和实践、以及具体的异常处理策略的设计与实施。通过良好的错误和异常处理架构,能够有效地提升应用的稳定性和用户体验,同时也...

    asp.net web应用程序设计教程

    ASP.NET Web应用程序设计教程是针对使用Microsoft的.NET框架开发Web应用程序的一个全面指南。.NET框架是微软提供的一个软件开发平台,它包含了一系列用于构建、运行Web应用和服务的库和工具。ASP.NET是.NET框架的一...

    Java Web应用中常见的错误和异常问题处理.zip

    在Java Web应用开发中,错误和异常的处理是不可或缺的一部分,因为它们直接影响到程序的稳定性和用户体验。本文将深入探讨Java Web应用中遇到的一些常见错误和异常问题,并提供相应的处理策略。 1. **Servlet和JSP...

    面向.net的web应用程序设计实验文件

    面向.NET的Web应用程序设计实验文件是针对学习微软认证课程的学生或开发者的重要资源,它涵盖了构建基于.NET框架的Web应用程序所需的关键技术与实践。这个实验文件集合旨在深化对Web开发的理解,提升实际操作技能,...

    org.springframework.web.servlet-3.1.0.RELEASE.jar.zip

    8. **异常处理**:通过@ControllerAdvice和@ExceptionHandler注解,可以全局统一处理Controller中的异常,提高代码的可维护性。 9. **表达式语言(EL)**:Spring 3.1引入了更强大的SpEL(Spring Expression ...

    web-swipe-view:移动 Web 应用程序的水平滑动视图

    其中,`web-swipe-view`是一个专为移动Web应用设计的组件,它允许用户通过水平滑动来浏览多个视图或内容页。本文将详细介绍`web-swipe-view`的核心概念、工作原理以及如何在项目中实现和优化。 首先,我们要了解`...

    qinxuewu-mongo-web-select-master_java_

    1. **Java编程**:作为主要开发语言,Java的面向对象特性、异常处理、集合框架、IO流等基础知识都会被用到。 2. **MongoDB驱动**:项目可能使用了Java MongoDB驱动,如`mongodb-driver-sync`或`mongodb-driver-...

Global site tag (gtag.js) - Google Analytics