第一步:自定义异常类:
package com.zhongbin.oa.exception;
/*
* 自定义异常类,用来处理系统的异常
*/
public class SystemException extends RuntimeException {
//对应messageResurser的KEY ,自定义的ExceptionHandler用此
KEY获取异常消息
private String key;
//异常消息的的参数
private Object[] values;
public String getKey() {
return key;
}
public Object[] getValues() {
return values;
}
public SystemException() {
super();
}
public SystemException(String message, Throwable
throwable) {
super(message, throwable);
}
public SystemException(String message) {
super(message);
}
public SystemException(Throwable throwable) {
super(throwable);
}
/*
*@param message 异常消息
*@param key messageResurser的KEY
*/
public SystemException(String message,String key){
super(message);
this.key = key;
}
/*
*@param message 异常消息
*@param key messageResurser的KEY
*@param values key对应异常消息的的单个参数
*/
public SystemException(String message,String key,Object
value){
super(message);
this.key = key;
this.values = new Object[]{value};
}
/*
*@param message 异常消息
*@param key messageResurser的KEY
*@param values key对应异常消息的的参数数组
*/
public SystemException(String message,String key,Object[]
values){
super(message);
this.key = key;
this.values = values;
}
}
第二步:自定义异常处理器
package com.zhongbin.oa.exception;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ExceptionHandler;
import org.apache.struts.config.ExceptionConfig;
public class SystemExceptionHandler extends ExceptionHandler {
/*
* @param ex 异常发生时传递过来的异常实例
* @param ae struts-config.xml 文件中的异常信息的配置
* @param mapping struts-config.xml文件中的mapping信
息配置
* @param formInstance formBean
* @param request request
* @param response response
*/
@Override
public ActionForward execute(Exception ex, ExceptionConfig
ae,
ActionMapping mapping, ActionForm.
formInstance,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException {
//构建一个返回路径
ActionForward forward = null;
if(ae.getPath() != null){
forward = new ActionForward(ae.getPath
());
}else {
forward = mapping.getInputForward();
}
//只处理自定义的SystemException异常类型
if (ex instanceof SystemException) {
SystemException se = (SystemException) ex;
String key = se.getKey();
ActionMessage error = null;
//判断有没有KEY
if(key == null){
key = ae.getKey();
error = new ActionMessage
(key,ex.getMessage());
}else{
//判断有没有values
if(se.getValues() != null){
error = new ActionMessage
(key,se.getValues());
}else{
error = new ActionMessage
(key);
}
}
//调用父类方法设置ERROR 在 SCOPE 中
super.storeException(request, key, error,
forward, ae.getScope());
return forward;
}
//其余的仍交给父类处理
return super.execute(ex, ae, mapping,
formInstance, request, response);
}
}
第三步:设置status-config.xml文件
<global-exceptions>
<exception
key="error.detail"
type="com.zhongbin.oa.exception.SystemException"
scope="request"
handler="com.zhongbin.oa.exception.SystemExceptionHandler"
path="/common/exception.jsp">
</exception>
第四步,设置MessageResources.properties文件key的值
exception.del.org.001 = don't delete orgnization ,id is {0}
error.detail=error:{0}
第五步:在可能有误的地方抛出自定义的异常:
if(org.getChildren().size() > 0 ){
throw new SystemException("不能删除,存在子机构","exception.del.org.001",""+org.getId());
}
分享到:
相关推荐
详解 SpringCloud Finchley Gateway 统一异常处理 SpringCloud Finchley Gateway 统一异常处理是指在使用 SpringCloud Finchley 版本的 Gateway 时,如何统一处理系统级异常的方法。默认情况下,SpringCloud ...
1. 统一异常处理:统一异常处理是指在项目中设置一个全局的异常处理器,当程序抛出异常时,这个处理器捕获异常并进行统一的处理。这样可以避免在每个方法中都写try-catch块,使得代码更加简洁,同时也方便管理和维护...
Spring Boot统一异常处理类,BaseResponse类就两个字段code和message。经测试,可以捕获所以异常,并返回指定json数据
2. **统一异常处理**: - SpringBoot提供了一种全局异常处理机制,可以通过@ControllerAdvice或@ExceptionHandler注解创建一个处理类,捕获并统一处理所有控制器可能出现的异常。 - 异常处理类中可以定义各种异常...
统一异常处理就是将所有可能抛出的异常集中处理,提供一个全局的、一致的错误反馈,提高用户体验并简化代码结构。 1. **Maven配置** Maven的pom.xml文件是项目的核心,它定义了项目的依赖关系。为了使用SpringMVC...
统一异常处理会区分前端是否ajax请求,自动返回json数据格式,要求开发人员在处理ajax请求时统一封装成一个对象返回,以符合代码统一规范。 此工程在idea环境编写,导入请自己新建工程手工复制代码导入。
"统一异常处理组件ResultEx"就是为了解决这个问题而设计的。这个组件的核心目标是提供一种可插拔的机制,使得开发者能够在整个应用程序中方便地管理和处理各种可能出现的异常情况,从而提高代码的可维护性和用户体验...
因此,统一异常处理是必要的,以实现更高效的故障排查和用户体验。 博客中提到的解决方案可能是通过自定义全局异常处理器实现的。在Spring Boot中,我们可以创建一个实现了`ErrorController`接口的类,或者定义一个...
springboot统一异常处理
基于 Spring Boot 编写出的统一返回数据结构处理和统一异常处理的插件 使用之前,首先:不要使用Object类型返回,否则返回为null时,不会拦截到** 配置项 # 根注释 veedo: # 统一拦截配置模块 ragdoll: # 统一...
在Spring Boot应用中,统一异常处理是一个重要的实践,它能确保程序在遇到错误时能够优雅地响应,而不是突然崩溃。在Java编程中,异常处理是控制流程的重要组成部分,因为它允许我们捕获并处理程序运行时可能出现的...
Springboot全局异常处理demo 项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免...使用统一异常处理的好处是能够将异常信息统一捕捉并组装成固定格式的数据返回。
3.处理日志时,需要在每一个try-catch块包含一些处理代码,有时候异常处理的代码比正常执行代码还多,污染正常执行代码。 4.同样类型异常有不同的处理方式,使最终的处理变得复杂。 5.接口抛出异常,破坏封装,打破...
Spring Cloud zuul自定义统一异常处理实现方法 Spring Cloud zuul自定义统一异常处理实现方法是指在Spring Cloud微服务体系中,使用zuul提供filer和router功能时,实现自定义统一异常处理的方法。在zuul中,默认的...
后台框架-统一异常处理
Spring Boot 统一异常处理最佳实践拓展篇 在 Spring Boot 中,统一异常处理是非常重要的,今天我们将介绍 Spring Boot 统一异常处理最佳实践的拓展篇。之前我们已经了解了基本的统一异常处理思路,现在我们将继续...
Spring MVC/Boot 统一异常处理最佳实践 本文将详细介绍 Spring MVC/Boot 统一异常处理的最佳实践,讨论如何在 Web 开发中处理各种异常,总结了一些常见的异常处理反例,并提供了一个统一的异常处理规范。 异常...
Spring Boot 提供了统一的异常处理机制,通过使用 @ControllerAdvice 和 @ExceptionHandler 注解,可以实现对控制器层、Service 层、Dao 层以及 Spring 系统内定义的部分异常的统一处理。 在 Spring Boot 中,可以...
本视频针对博客内容,讲解springMVC框架中的统一异常处理的知识点和实例,以及500错误和404错误异常处理上的区别,简单易懂,言简意赅。
统一异常处理、断言和枚举结合使用案例