content: package com.ruoyi.common.utils;
  
  import java.io.PrintWriter;
  import java.io.StringWriter;
  import org.apache.commons.lang3.exception.ExceptionUtils;
  
  /**
   * 错误信息处理类。
   *
   * @author ruoyi
   */
  public class ExceptionUtil
  {
      /**
       * 获取exception的详细错误信息。
       */
      public static String getExceptionMessage(Throwable e)
      {
          StringWriter sw = new StringWriter();
          e.printStackTrace(new PrintWriter(sw, true));
          return sw.toString();
      }
  
      public static String getRootErrorMessage(Exception e)
      {
          Throwable root = ExceptionUtils.getRootCause(e);
          root = (root == null ? e : root);
          if (root == null)
          {
              return "";
          }
          String msg = root.getMessage();
          if (msg == null)
          {
              return "null";
          }
          return StringUtils.defaultString(msg);
      }
  
      /**
       * 检测异常e被触发的原因是不是因为异常cause。
       * 
       * @param e 捕获的异常。
       * @param cause 异常触发原因。
       * @return 如果异常e是由cause类异常触发，则返回true；否则返回false。
       */
      public static boolean isCausedBy(final Throwable e, final Class<? extends Throwable> cause)
      {
          if (cause.isAssignableFrom(e.getClass()))
          {
              return true;
          }
          else
          {
              Throwable t = e.getCause();
              while (t != null && t != e)
              {
                  if (cause.isAssignableFrom(t.getClass()))
                  {
                      return true;
                  }
                  t = t.getCause();
              }
              return false;
          }
      }
  }
  