初学者的忧伤-哪位大神给自己公司开发过好的异常处理机制,求指点一个好的方案

问题描述

哪位大神给自己公司开发过好的异常处理机制,求指点一个好的方案
我公司现在需要开发一套自己的异常处理机制,就是当异常出现时,在客户端能够返回具体是哪的什么异常,如微信API以及一些大公司做的那种,求指点方案。

解决方案

定义一套有规律异常编码,一看返回编码就知道哪里有异常

解决方案二:

主要就是定义错误码,可以参考微软的GetLastError的做法,就是提供了各种各样的错误码信息,这样用户可以查询了解具体的错误原因。

解决方案三:

package com.lz.ctsframework.core.support;

import java.text.MessageFormat;

/**

  • 类说明:Service层统一抛出的异常
  • 详细描述:
  • */
    public class ServiceException extends RuntimeException {

    private static final long serialVersionUID = 6514891174875747380L;

    /** 异常错误码 **/
    private String code;

    /** 异常描述 /
    private String msg;
    /
    扩展异常描述(包括msg) **/
    private String extMsg;

    /**

    • ServiceException构造方法,有format字符组
    • @param errorCode 错误码
    • @param param format字符组
    • @param extMsg 扩展信息,给出具体的错误值信息等
      */
      public ServiceException(ErrorCode errorCode,String param[],String ... extMsg) {
      super(null==errorCode ? "" : errorCode.getCode());
      init(errorCode, param,extMsg);
      }

    /**

    • ServiceException构造方法,有format字符组
    • @param errCode
    • @param paramsList
      */
      public ServiceException(ErrorCode errCode, Object... paramsList) {
      Object[] params = null;
      if ((paramsList != null) && (paramsList.length > 0)
      && ((paramsList[(paramsList.length - 1)] instanceof Throwable)))
      {
      Object[] newParam = new Object[paramsList.length - 1];
      System.arraycopy(paramsList, 0, newParam, 0, newParam.length);
      params = newParam;
      super.initCause((Throwable)paramsList[(paramsList.length - 1)]);
      }
      else {
      params = paramsList;
      super.initCause(null);
      }

      this.code = null==errCode ? "" : errCode.getCode();
      this.msg = null==errCode ? "" : MessageFormat.format(errCode.getMsg(),params);

      this.extMsg = this.msg;
      }

    private void init(ErrorCode errorCode, String param[], String... extMsg) {
    this.code = null==errorCode ? "" : errorCode.getCode();
    this.msg = null==errorCode ? "" : MessageFormat.format(errorCode.getMsg(),param);
    StringBuilder builder = new StringBuilder(100);
    builder.append(this.msg);
    if(null != extMsg){
    for(String ext : extMsg ){
    builder.append("[").append(ext).append("]");
    }
    }
    this.extMsg = builder.toString();
    }

    /**

    • @param code 错误码
    • @param msg 描述信息
      */
      public ServiceException(String code, String msg) {
      super(code+":"+msg);
      this.code = code;
      this.msg = msg;
      }

    /**

    • 带Exception的构造方法,传format字符数组
    • @param errorCode 错误码基类
    • @param e 异常
    • @param extMsg 扩展信息,给出具体的错误值信息等
      */
      public ServiceException(ErrorCode errorCode, Throwable e,String param[] , String ...extMsg ) {
      super(null==errorCode ? "" : errorCode.getCode(), e);
      init(errorCode, param, extMsg);
      }

    /**

    • @param code 错误码
    • @param msg 描述信息
    • @param e 异常
      /
      /*public ServiceException(String code, String msg,Throwable e) {
      super(code+":"+msg, e);
      this.code = code;
      this.msg = msg;
      }
      /

    /**

    • 方法说明:异常错误码
    • @return
      */
      public String getCode() {
      return code;
      }

    /**

    • 方法说明:异常描述信息
    • @return
      */
      public String getMsg() {
      return msg;
      }

    public String getExtMsg() {
    return extMsg;
    }

    @Override
    public String getMessage() {

    return super.getMessage() + ","+extMsg;
    }

    public static void main(String[] args) {

    }

}

时间: 2024-08-02 13:36:39

初学者的忧伤-哪位大神给自己公司开发过好的异常处理机制,求指点一个好的方案的相关文章

请哪位大神知道如何用VBA代码做word索引,求代码啊。。拜托拜托。。

问题描述 请哪位大神知道如何用VBA代码做word索引,求代码啊..拜托拜托.. 请哪位大神知道如何用VBA(visual basic)代码做word索引,求代码啊..拜托拜托.. 解决方案 我也来个:需要你手动提供关键词哦.... Sub Test() BiaoJiAll ""编辑|学校"" ''End SubSub BiaoJiAll(ByVal bStr As String) ''bStr为关键词,用|分割 On Error Resume Next Dim i

哪位大神帮我看看oracle数据库问题 谢谢!

问题描述 哪位大神帮我看看oracle数据库问题 谢谢! A表里面的一个字段 和B表里面的一个字段 做完联查以后 能不能进行运算? 解决方案 SELECT A.字段1-B.字段1 from A,B where a.字段2=B.字段2 解决方案二: select *,(SELECT a.ename, b.dname FROM employee a,dept b WHERE a.id=b.id) 把整个的当成一个字段就行了 解决方案三: 能的 SELECT A.字段1 , B.字段1 from A,

vc++编程问题-初学者 c++ 哪位大神帮帮忙

问题描述 初学者 c++ 哪位大神帮帮忙 error c2533 :'time::time':constructors not Allowed a return type 定义类的时候加:了. 解决方案 构造函数不允许有返回值 解决方案二: 安卓学习,从初学者到大神

ava cript-哪位大神帮我看一下里面那个值是怎么算出来最好能举例说明下

问题描述 哪位大神帮我看一下里面那个值是怎么算出来最好能举例说明下 function showLoginPop(){ $("#popupLogin").show(); } // === Begin Date.js var CalendarData=new Array(100); var madd=new Array(12); var tgString="甲乙丙丁戊己庚辛壬癸"; var dzString="子丑寅卯辰巳午未申酉戌亥"; var n

哪位大神指导一下,关于Oracle数据库中类型varchar2(2) 存储汉字的问题

问题描述 哪位大神指导一下,关于Oracle数据库中类型varchar2(2) 存储汉字的问题 大神们跪求招数:orcale数据库中的一个字段YXQDW(有效期单位) 类型varchar2(2) 才两字节 用来存一个汉字,比如"年",我的项目(C#)一个汉字占用3个字节, 写SQL语句 insert不进去啊,提示字段范围超出了.难不成要像blob字段那样写?或者有什么更好的方式能将该字段插入呢?万分感激! 解决方案 可以换成nvarchar(2),这个是可变长度

sql server-关于SQL的有哪位大神知道吗?

问题描述 关于SQL的有哪位大神知道吗? SQLserver2008怎么显示行数?有哪位大神知道吗?关于SQL的有哪位大神知道吗? 解决方案 最左边不是有行数吗? 解决方案二: sql 常用语法 你知道吗? 解决方案三: 工具--选项--文本编辑器--所有语言--显示--行号 解决方案四: 你是要在查询结果中显示行数..还是要在查询语句的SQLwindow编辑器中显示行数? 解决方案五: 如果是想要统计记录条数,通过符合基本SQL规范的: select count(*) from 表名: 就可以

移动- 系统级WIFI->Data切换警如何实现?哪位大神提供个思路

问题描述 系统级WIFI->Data切换警如何实现?哪位大神提供个思路 触发条件:1.wifi 和数据流量都打开 2.处于wifi上网状态,但由于wifi信号太弱而连接丢失系统行为: 1. 弹出对话框,"无可用WIFI连接,是否切换到移动数据?",有三个按钮"仅此一次""始终"以及"关闭移动数据"2. 用户点击"仅此一次"则发起数据连接,点击"始终"则发起数据连接并且以后不再询问,

java-怎么动态修改jqgrid editoptions的值,哪位大神知道啊

问题描述 怎么动态修改jqgrid editoptions的值,哪位大神知道啊 比方说jqgrid 生成的下拉框有10条选项,我想在让它触发一个事件显示前5条选项,触发另一个事件显示后5条,怎么做?

有没有哪位大神有QT编写的图书馆管理系统?万分感谢

问题描述 有没有哪位大神有QT编写的图书馆管理系统?万分感谢 用QT做的图书馆管理系统,不需要太复杂,最好能有详细一点的注释.万分感谢 解决方案 http://download.csdn.net/download/i_love_u_5/6886105http://download.csdn.net/detail/lea200304/4049593http://download.csdn.net/detail/qyczyr/6676283