Java自定义异常信息
通常在开发过程中,会遇到很多异常,对于一些知道异常的原因,这时候想要返回给浏览器,就需要自定义系统的异常
1、Spring 注入异常处理类
<bean id ="commonExceptionHandler" class = "com..test.common.exception.handler.CommonExceptionHandler">
2、注入的异常处理类,主要是重写resolveException方法
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import com.test.common.constant.ERRORConstants;
import com.test.common.constant.GlobalConstants;
import com.test.common.dto.ResultDTO;
import com.test.common.exception.ServiceException;
import com.test.common.exception.SysException;
import com.test.common.util.SpringContextHolder;
import com.test.common.util.StringUtil; public class CommonExceptionHandler implements HandlerExceptionResolver {
private static final Logger LOG = LoggerFactory.getLogger(CommonExceptionHandler.class); /**
* @param request 参数
* @param response 参数
* @param obj 参数
* @param e 参数
* @return modelview
*/
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object obj,
Exception e) {
ResultDTO result;
if (e instanceof SysException) {
result = handleSysException((SysException) e);
} else if (e instanceof ServiceException) {
result = handleServiceException((ServiceException) e);
} else {
result = handleSysException(new SysException(ERRORConstants.COMMON_SYSTEM_ERROR, e));
} responseOutWithJson(response, result);
return new ModelAndView();
}
private ResultDTO handleSysException(SysException ex) {
ResultDTO result = new ResultDTO();
result.setCode(ex.getCode());
if(StringUtil.isNotEmpty(ex.getMsg())){
result.setMessage(ex.getMsg());//这里获取的是自己设置的信息
}else {
result.setMessage(SpringContextHolder.getMessage(ex.getCode(), null));
}
LOG.error(new StringBuilder().append(result.getCode()).append(result.getMessage()).toString(), ex);
return result;
} private ResultDTO handleServiceException(ServiceException ex) {
ResultDTO result = new ResultDTO();
result.setCode(ex.getCode());
result.setMessage(SpringContextHolder.getMessage(ex.getCode(), null));
LOG.error(new StringBuilder().append(result.getCode()).append(result.getMessage()).toString());
return result;
} protected void responseOutWithJson(HttpServletResponse response, Object responseObject) { JSONObject responseJSONObject = JSONObject.fromObject(responseObject); String jsonString = responseJSONObject.toString(); response.setCharacterEncoding(GlobalConstants.DEFAULT_ENCODING);
response.setContentType("application/json; charset=utf-8");
PrintWriter out = null;
try {
out = response.getWriter();
out.append(jsonString);
LOG.debug("返回是\n");
LOG.debug(jsonString);
} catch (IOException e) {
LOG.debug("Error responseOutWithJson");
} finally {
if (out != null) {
out.close();
}
}
} }
3、自定义系统异常类
package com.test.common.exception.base;
public class BaseCommonException extends RuntimeException {
private static final long serialVersionUID = 1L;
private String code;
private String msg;//用于存放异常信息
/**
* 构造函数
*/
public BaseCommonException() {
super();
}
/**
*
* @param cause 参数
*/
public BaseCommonException(Throwable cause) {
super(cause);
}
/**
*
* @param code 参数
*/
public BaseCommonException(String code) {
this.setCode(code);
}
/**
*
* @param code 参数
* @param e 参数
*/
public BaseCommonException(String code, Throwable e) {
super(e);
this.setCode(code);
}
/**
*
* @param code 参数
* @param e 参数
*/
public BaseCommonException(String code, Throwable e,String msg) {
super(e);
this.setCode(code);
this.setMsg(msg);
}
/**
*
* @return code
*/
public String getCode() {
return code;
}
/**
*
* @param code 参数
*/
public void setCode(String code) {
this.code = code;
}
/**
*
* @return msg
*/
public String getMsg() {
return msg;
}
/**
*
* @param msg 参数
*/
public void setMsg(String msg) {
this.msg = msg;
}
}
4、Service类
public boolean test() {
String msg = "";
try {
msg = "自定义信息";
return true;
} catch (Exception e) {
throw new BaseCommonException("300",e,
"失败信息:"+msg);
}
}
Java自定义异常信息的更多相关文章
- Java自定义异常类的简单实现
学习目标: 掌握自定义异常类 例题: 需求:自定义异常类,简单判断是否注册成功 代码如下: RegisterException类: /** * @author YanYang * @projectNa ...
- JAVA类型信息——反射机制
JAVA类型信息——反射机制 一.反射机制概述 1.反射机制:就是java语言在运行时拥有的一项自我观察的能力,java通过这种能力彻底了解程序自身的情况,并为下一步的动作做准备. 2.反射机制的功能 ...
- JAVA类型信息——Class对象
JAVA类型信息——Class对象 一.RTTI概要 1.类型信息RTTI :即对象和类的信息,例如类的名字.继承的基类.实现的接口等. 2.类型信息的作用:程序员可以在程序运行时发现和使用类型信息. ...
- Java基础 -- 深入理解Java类型信息(Class对象)与反射机制
一 RTTI概念 认识Claa对象之前,先来了解一个概念,RTTI(Run-Time Type Identification)运行时类型识别,对于这个词一直是 C++ 中的概念,至于Java中出现RT ...
- Java类型信息
一.引言 最近在阅读<Java编程思想>,学习一下java类型信息,现在做一下总结.Java如何让我们在运行时识别对象和类的信息的.主要有两种方式:一种是传统的“RTTI”,它假定我们在编 ...
- jQuery显示SQL存储过程自定义异常信息
学习MVC应用开发,改变了Insus.NET以前ASP.NET的开发习惯,以前开发均是服务器端,而现在使用jQuery的Ajax在实现.想到与考虑了很多问题,也遇上很多问题,一些解决了,一些还留下,望 ...
- 查看Linux、Tomcat、JAVA版本信息
查看Linux.Tomcat.JAVA版本信息 [root@test1 bin]# cd /usr/local/tomcat/tomcat_jdt/bin/ [root@test1 bin]# sh ...
- JAVA类型信息——Class对象(转载)
JAVA类型信息--Class对象 一.RTTI概要 1.类型信息RTTI :即对象和类的信息,例如类的名字.继承的基类.实现的接口等. 2.类型信息的作用:程序员可以在程序运行时发现和使用类型信息. ...
- jps不显示java进程信息
本来想自己整理,发现已经有前人整理,并且完美解决了我的问题,故转载,感谢分享 转自:http://trinea.iteye.com/blog/1196400 对于jps较熟悉可以直接查看第二部分的分析 ...
随机推荐
- pta5-9 Huffman Codes (30分)
5-9 Huffman Codes (30分) In 1953, David A. Huffman published his paper "A Method for the Const ...
- pat1066. Root of AVL Tree (25)
1066. Root of AVL Tree (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue An A ...
- Hadoop学习笔记(3) Hadoop I/O
1. HDFS的数据完整性 HDFS会对写入的所有数据计算校验和,并在读取数据时验证校验和.datanode负责在验证收到的数据后存储数据及其校验和.正在写数据的客户端将数据及其校验和发送到由一系列d ...
- get post put delete
get:获取资源 幂等 post:执行不安全和非幂等操作(幂等:多次请求于一次请求的效果一样) put:更新资源 幂等 delete:删除资源 幂等 如何理解幂等: public book { p ...
- jquery-validate插件
jQuery Validation 插件 优点:1.表单验证非常简单方便,并且提供了许多配置项目2.国际化,可以自定义提示信息 命令行安装 //初始化bowerbower init //使用bower ...
- 【起航计划 024】2015 起航计划 Android APIDemo的魔鬼步伐 23 App->Notification->IncomingMessage 状态栏通知
应用程序可以使用Notifications来通知用户某个事件发生了(如收到短信).类NotificationManager 用来处理Notification, NotificationManager可 ...
- Android 切换主题换肤实现
思路以及实现 1.主题的切换以及实现 首先我们先来明确个概念,现在我所说的切换主题,就切换整个app的颜色风格,当然也有少部分的图片的切换.注意哦 我这边说的是少部分图片哦!如果是大面积的换图片的吧! ...
- 压力测试工具ab的使用
ab是Apache自带的HTTP压力测试工具,全称是ApacheBench 路径为\Apache\bin\ab.exe 参数文档: http://httpd.apache.org/docs/2.2/p ...
- tnagios - query handler
启动日志 [root@bjyh-48-86 nagios]# cat nagios.log [1433471109] Nagios 4.1.0rc1 starting... (PID=5136) [1 ...
- PHP 简单调用rest WebServices
<?php $ch = curl_init("http://api.cachk.com:8185/Tech-Trans.esPOS4.PosService.UAT/rest/enqui ...