目前开发的一个项目
开发一个新功能,总是感觉很吃力,
因为总是要处理各种协作方接口异常情况:
(a)502 服务器没有启动
(b)403 拒绝访问
(c)404 接口路径不对
(d)500 服务器内部错误
如果把这些错误信息一层层往上返回,会非常麻烦
在业务逻辑中参杂了这些与业务一点关系都没有的代码,看起来很累赘.
看下面的代码:
错误是一步步往上传递,每一个方法里面都在处理,感觉好累
最下面的代码片段是控制器里面的,
在其他控制器里面也会看到类似的代码
其实可以统一处理的
这些异常应该在一个地方统一捕获,统一处理.
而不是东处理一个,西处理一个,看起来很乱,容易造成冗余和重复,很难维护.
下面我就漏改了:
如何实现异常统一处理呢?
第一,遇到异常直接抛出,而不是马上处理;
第二,一个异常handler进行统一处理
handler 类:
package com.chanjet.gov.handler; import com.chanjet.gov.bean.exception.MustBeDealedException; import com.chanjet.gov.util.Constant; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * Created by whuanghkl on 3/30/16. */ //注意使用注解@ControllerAdvice作用域是全局Controller范围 //可应用到所有@RequestMapping类或方法上的@ExceptionHandler、@InitBinder、@ModelAttribute,在这里是@ExceptionHandler @ControllerAdvice public class ExceptionHandlerAdvice { @ExceptionHandler(MustBeDealedException.class) // @RESPONSE_CONTENTTYPE_JSON_UTFStatus(HttpStatus.BAD_REQUEST) // @ResponseBody public String handleIOException(MustBeDealedException ex) { // return ClassUtils.getShortName(ex.getClass()) + ex.getMessage(); System.out.println(ex); HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse(); String responseStatusCode = ex.getResponseStatusCode(); if (null == responseStatusCode) { responseStatusCode = Constant.EMPTY; } try { response.sendRedirect("/error.html?error=" + ex.getErrorCode() + "&responseStatusCode=" + responseStatusCode); } catch (IOException e) { e.printStackTrace(); } return null; } }
参考:http://www.cnblogs.com/xguo/p/3163519.html
相关推荐
异常处理是每个应用程序都会用到的,纵然在程序编写期间我们都会最大限度的考虑可能发生的异常并进行相应的处理,但是往往并不能完全考虑周全,百密一疏,出现未处理异常而导致程序出错,数据丢失,如用户输入错误...
程序异常处理是软件开发中的一个核心概念,它关乎程序的健壮性和稳定性。在编程过程中,我们无法保证每一个环节都能按预期执行,因此,当程序遇到错误或异常情况时,有效的异常处理机制能够帮助我们捕获问题,防止...
在编程世界中,异常处理是一项至关重要的技能,无论是Java、C语言、C++还是C#,甚至是用于服务器...通过理解和熟练运用各种语言的异常处理机制,我们可以更好地应对程序运行中的错误情况,提高软件的可靠性和用户体验。
Java 异常处理是 Java 编程语言中的一种重要机制,用于处理程序在运行时可能出现的错误或异常情况。下面是关于 Java 异常处理的习题和知识点总结: 一、Java 异常处理关键字 * Java 中用来抛出异常的关键字是 `...
本主题将深入探讨“程序中的异常处理”,帮助你理解和掌握如何有效地管理这些异常,确保程序即使在出现问题时也能保持稳定运行。 异常处理的目标是让程序在遇到错误时不会突然崩溃,而是能够优雅地捕获并处理异常,...
易语言程序异常处理源码,程序异常处理,异常处理子程序,信息框_,SetUnhandledExceptionFilter,EXCEPTION_RECORD,CONTEXT,EXCEPTION_POINTERS
Java面向对象程序设计实验四 异常处理 Java面向对象程序设计实验四的主要目的是掌握异常处理的技术,了解自定义异常类与异常跟踪栈的概念。在这个实验中,我们将学习如何捕获并处理异常,并通过编写程序来验证...
应用程序的组件中发生了未经处理的异常。如果单击继续,应用程序将......
在 Java 程序设计中,异常处理是非常重要的一部分。异常是指程序在执行过程中出现的错误或异常情况,例如文件不存在、网络连接中断、操作数超出预定范围等。在 Java 中,异常本身作为一个对象,产生异常就是产生一个...
通过对异常情况的处理,可以发现产生异常的原因,并进行必要的异常处理,从而使程序的执行流程继续下去。 在传统的异常处理方法中,通常使用条件判断、分支处理方式来处理异常。但是,这种方法存在一些问题,例如...
异常处理,年龄与定义的相符合时就会出现不同的处理方法
1.熟悉异常处理原理和程序结构; 2.掌握异常处理程序设计技术并能正确应用。 二、实验内容 算术异常ArithmeticException(数组越界ArrayIndexOutOfBoundsException、字符串越界异常StringIndexOutOfBoundsException...
当程序正在运行的时候,一旦有异常发生的话,此程序就会生成一个代表该异常的对象,该对象中对出现错误的信息状态及异常的类型都有相关的描述,给运行时系统接收此异常对象,然后找到适当的代码来对所发生的异常进行...
Java 异常处理是 Java 语言中的一个关键组件,用于处理程序运行过程中的错误和异常。在 Java 中,异常处理框架是 Java 语言健壮性的一个重要体现。本文将从 Java 异常的基本概念和语法开始,讲述 Java 异常处理的...
面向对象程序设计中,异常处理是一个非常重要的概念,它可以使程序更加健壮和可靠。在本实验中,我们将学习如何使用 C++ 语言来实现文件输入/输出和异常处理。 一、实验目的 本实验的目的是让学生了解输入/输出流...
易语言程序异常处理源码.rar
本资源摘要信息来自 Exception Handling in C Programming Design Tutorial PPT Courseware,总页数为 18 页,主要讲解了 C 语言程序设计中异常处理的概念、类型、处理机制和实践操作。 异常处理的概念 异常是一种...
在混合应用程序中,异常处理需考虑模式转换,以确保异常处理程序正确执行。 异常处理是保证系统稳定性和可靠性的关键环节,理解并熟练掌握这些概念对于任何ARM平台的开发者都至关重要。正确处理异常可以提高系统的...
Java中的异常处理是编程实践中必不可少的一部分,它确保了程序在遇到错误或异常情况时能够优雅地处理并继续执行,或者至少提供有用的错误信息。异常处理的主要目的是提高程序的健壮性和稳定性。 1. 为什么需要异常...