Blame view

java110-utils/src/main/java/com/java110/utils/exception/ExceptionUtils.java 2.26 KB
88e030b7   王彪总   init project
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
  package com.java110.utils.exception;
  
  import com.java110.utils.util.StringUtil;
  import org.springframework.util.ObjectUtils;
  
  import java.io.IOException;
  import java.io.PrintWriter;
  import java.io.StringWriter;
  
  /**
   * Created by wuxw on 2018/4/14.
   */
  public class ExceptionUtils {
  
      public static Throwable resolveActualException(Throwable t)
      {
          Throwable cause = t;
          while (cause != null) {
              if (ObjectUtils.nullSafeClassName(cause).startsWith("com.java110.")) {
                  return cause;
              }
              cause = cause.getCause();
          }
          return cause;
      }
  
      public static void rethrowException(Throwable t) {
          if ((t instanceof RuntimeException)) {
              throw ((RuntimeException)t);
          }
  
          throw new RuntimeException(t);
      }
  
      public static String populateExecption(Throwable t)
      {
          return populateExecption(t, 2000);
      }
  
      public static String populateExecption(Throwable t, int descLimit) {
          if (t != null) {
              String message = "";
              StringWriter writer = null;
              PrintWriter pw = null;
              try{
  
                  writer = new StringWriter();
                  pw = new PrintWriter(writer);
                  t.printStackTrace(pw);
                  message = writer.toString();
  
              } finally  {
                  if(pw != null) {
                      pw.close();
                  }
                  if(writer != null) {
                      try {
                          writer.close();
                      } catch (IOException e) {
                          e.printStackTrace();
                      }
                  }
              }
              return StringUtil.truncateMessage(message, descLimit);
          }
          return null;
      }
      /**
       * 创建异常堆栈信息
       * @param message
       * @param cause
       * @return
       */
      public static String buildMessage(String message, Throwable cause) {
          if (cause != null) {
              StringBuilder buf = new StringBuilder();
              if (message != null) {
                  buf.append(message).append("; ");
              }
              buf.append("nested exception is ").append(cause);
              return buf.toString();
          }
          else {
              return message;
          }
      }
  }