在系统开发过程中,总少不免要自己处理一些异常信息,然后将异常信息变成友好的提示返回到客户端的这样一个过程,之前都是new一个自定义的异常,当然这个所谓的自定义异常也是继承RuntimeException的,但这样往往会造成异常信息说明不一致的情况,所以就想到了用枚举来解决的办法。
1、先创建一个接口,里面提供两个方法,一个是getErrorCode, 一个是getErrorMessage,如:
1 2 3 4 5 6 7 | public interface IErrorCode { public String getErrorCode(); public String getErrorMessage(); } |
2、创建一个枚举,实现IErrorCode里的方法
public enum SysErrorEnums implements IErrorCode {</span><span style="color: #008000">/**</span><span style="color: #008000">参数为空</span><span style="color: #008000">*/</span><span style="color: #000000"></br> EMPTY_PARAME(</span>"A11002","参数为空"<span style="color: #000000">),</br> </span><span style="color: #008000">/**</span><span style="color: #008000">参数错误</span><span style="color: #008000">*/</span><span style="color: #000000"></br> ERROR_PARAME(</span>"A11002","参数错误"<span style="color: #000000">);</br></br> </span><span style="color: #0000ff">private</span><span style="color: #000000"> String errorCode;</br> </span><span style="color: #0000ff">private</span><span style="color: #000000"> String errorMessage;</br></br> </span><span style="color: #0000ff">private</span><span style="color: #000000"> SysErrorEnums(String errorCode, String errorMessage) {</br> </span><span style="color: #0000ff">this</span>.errorCode =<span style="color: #000000"> errorCode;</br> </span><span style="color: #0000ff">this</span>.errorMessage =<span style="color: #000000"> errorMessage;</br> }</br></br> </span><span style="color: #0000ff">public</span><span style="color: #000000"> String getErrorCode() {</br> </span><span style="color: #0000ff">return</span><span style="color: #000000"> errorCode;</br> }</br></br> </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> setErrorCode(String errorCode) {</br> </span><span style="color: #0000ff">this</span>.errorCode =<span style="color: #000000"> errorCode;</br> }</br> </span><span style="color: #0000ff">public</span><span style="color: #000000"> String getErrorMessage() {</br> </span><span style="color: #0000ff">return</span><span style="color: #000000"> errorMessage;</br> }</br></br> </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> setErrorMessage(String errorMessage) {</br> </span><span style="color: #0000ff">this</span>.errorMessage =<span style="color: #000000"> errorMessage;</br> }</br>
}
3、定义一个自定义的异常类
public class BusinessException extends RuntimeException {</span><span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">final</span> <span style="color: #0000ff">long</span> serialVersionUID = 1L<span style="color: #000000">;</br></br> </span><span style="color: #0000ff">private</span><span style="color: #000000"> IErrorCode iErrorCode;</br></br> </span><span style="color: #0000ff">private</span><span style="color: #000000"> String errorCode;</br> </span><span style="color: #0000ff">private</span><span style="color: #000000"> String errorMessage;</br> </span><span style="color: #0000ff">private</span> Map<String, Object><span style="color: #000000"> errorData;</br></br> </span><span style="color: #0000ff">public</span><span style="color: #000000"> BusinessException(IErrorCode iErrorCode) {</br> </span><span style="color: #0000ff">super</span><span style="color: #000000">();</br> </span><span style="color: #0000ff">this</span>.iErrorCode =<span style="color: #000000"> iErrorCode;</br> </span><span style="color: #0000ff">this</span>.errorCode =<span style="color: #000000"> iErrorCode.getErrorCode();</br> </span><span style="color: #0000ff">this</span>.errorMessage =<span style="color: #000000"> iErrorCode.getErrorMessage();</br> }</br></br> </span><span style="color: #008000">//</span><span style="color: #008000">其他get、set、构造方法</span>
}
4、代码中抛异常
if(true){ throw new BusinessException(SysErrorEnums.EMPTY_OBJ); }
5、可以通过异常拦截器来拦截错误,获取错误后统一格式输出;
这样做的好处是可以高度统一所有异常返回的code及message, 如果需要更改提示信息或代号,只需更改SysErrorEnums即可,并且可以自行添加多个异常枚举文件来分别对应不同的模板异常信息。代码结构简单,清淅。
函数指针与typedef
MSDN DLL 综合
DLL
Firefox浏览器兼容Javascript脚本的方法
C++中extern “C”含义深层探索
生成索引脚本
使用Go语句生成数值表
避免使用count(*)获得表的记录数,解决其延迟问题
在程序开发中怎样写SQL语句可以提高数据库的性能
- 最新文章
-
【技术贴】怎么 豆瓣网在线看书
【技术贴】安装 adobe flash player提示由于现有版本正在使用,因此无法安装Playe
【转】如何防止别的网站直接盗取自己的文章
【技术贴】火狐最好用的标签插件。
【技术贴】魂斗罗坦克Normal Tanks第五关以及第5、6、7、关的LICENCE CODE的查
【转】PHPWind7.5如何在论坛、门户、圈子设置LOGO?
EventMon: 让EventLog事件触发抓包停止的动作
NMCap: 自动化抓取网络通讯的简单方式
FirstMatchCodeGroup 和 UnionCodeGroup
SharePoint BreadCrumb