自定义封装Exception异常抛出

话不多说直接上代码,朋友们可自己测试用于项目:

BaseException类(基础类)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/**
  *异常处理基类
  */
 public class BaseException extends RuntimeException {
 
     private static final long serialVersionUID = -3653870580234213024L;
     protected String messageKey;
 
 
     public BaseException() {
         super();
     }
 
     public BaseException(String s, Throwable throwable) {
         super(s, throwable);
     }
 
     public BaseException(Throwable throwable) {
         super(throwable);
     }
 
     public BaseException(String messageKey) {
         super();
         this.messageKey = messageKey;
     }
 
 
     /**
      * 取得异常信息key
      * @return String
      */
     public String getMessageKey() {
         return messageKey;
     }
 
 
     /**
      * 设置异常信息key
      * @param messageKey
      * @return void
      */
     public void setMessageKey(String messageKey) {
         this.messageKey = messageKey;
     }
 
     @Override
     public String getMessage() {
         return messageKey;
     }

 

DaoException类 (Dao层)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class DaoException extends BaseException {
 
    private static final long serialVersionUID = -9006104640618533135L;
 
    public DaoException(String messageKey) {
        super.setMessageKey(messageKey);
    }
 
    public DaoException(String messageKey, Throwable t) {
        super.setMessageKey(messageKey);
        super.initCause(t);
    }
 
    public DaoException(Throwable t) {
        super.setMessageKey(t.getClass().getSimpleName());
        super.initCause(t);
    }
 
    public Throwable getOrignalException() {
        Throwable t = this.getCause();
        while(t.getCause() != null){
            t = t.getCause();
        }
        return t;
    }
 
    public String getOrignalMessageKey() {
        return this.getOrignalException().getClass().getSimpleName();
    }
}

 

ServiceException类(业务层)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class ServiceException extends BaseException {
 
    private static final long serialVersionUID = -9006104640618533135L;
 
    public ServiceException(String messageKey) {
        super(messageKey);
    }
 
    public ServiceException(Throwable t) {
        if(t instanceof BaseException){
            super.setMessageKey(((BaseException) t).getMessageKey());
        }
        super.initCause(t);
    }
 
    public ServiceException(String messageKey, Throwable t) {
        super.setMessageKey(messageKey);
        super.initCause(t);
    }
 
    public ServiceException() {
 
    }
 
    public Throwable getOrignalException() {
        Throwable t = this.getCause();
        while(t.getCause() != null){
            t = t.getCause();
        }
        return t;
    }
 
    public String getOrignalMessageKey() {
        return this.getOrignalException().getClass().getSimpleName();
    }
}

 

posted @   47号Gamer丶  阅读(495)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示