jialh
1 天以前 dd6687b118561100e1677e88a9c2f5842a54c531
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
package com.java110.utils.util;
 
import java.io.PrintWriter;
import java.io.StringWriter;
import java.lang.reflect.Field;
 
/**
 * 异常工具类
 */
public class ExceptionUtil {
 
    public static String getStackTrace(Throwable throwable) {
        StringWriter sw = new StringWriter();
        PrintWriter pw = new PrintWriter(sw);
 
        try {
            throwable.printStackTrace(pw);
 
            Field detailMessageField = Throwable.class.getDeclaredField("detailMessage");
 
            // 2. 设置字段可访问(突破私有访问限制)
            detailMessageField.setAccessible(true);
 
            // 3. 获取字段值(即异常的详细消息)
            String detailMessage = (String) detailMessageField.get(throwable);
 
            return detailMessage;
        } catch (NoSuchFieldException e) {
            throw new RuntimeException(e);
        } catch (IllegalAccessException e) {
            throw new RuntimeException(e);
        } finally {
            pw.close();
        }
    }
}