Class ExceptionUtil

java.lang.Object
com.luna.common.exception.ExceptionUtil

public class ExceptionUtil extends Object
异常工具类
Author:
Looly
  • Constructor Details

    • ExceptionUtil

      public ExceptionUtil()
  • Method Details

    • getMessage

      public static String getMessage(Throwable e)
      获得完整消息,包括异常名,消息格式为:{SimpleClassName}: {ThrowableMessage}
      Parameters:
      e - 异常
      Returns:
      完整消息
    • getSimpleMessage

      public static String getSimpleMessage(Throwable e)
      获得消息,调用异常类的getMessage方法
      Parameters:
      e - 异常
      Returns:
      消息
    • wrapRuntime

      public static RuntimeException wrapRuntime(Throwable throwable)
      使用运行时异常包装编译异常

      如果传入参数已经是运行时异常,则直接返回,不再额外包装

      Parameters:
      throwable - 异常
      Returns:
      运行时异常
    • wrapRuntime

      public static RuntimeException wrapRuntime(String message)
      将指定的消息包装为运行时异常
      Parameters:
      message - 异常消息
      Returns:
      运行时异常
      Since:
      5.5.2
    • wrapAndThrow

      public static void wrapAndThrow(Throwable throwable)
      包装异常并重新抛出此异常
      RuntimeExceptionError 直接抛出,其它检查异常包装为UndeclaredThrowableException 后抛出
      Parameters:
      throwable - 异常
    • wrapRuntimeAndThrow

      public static void wrapRuntimeAndThrow(String message)
      将消息包装为运行时异常并抛出
      Parameters:
      message - 异常消息
      Since:
      5.5.2
    • unwrap

      public static Throwable unwrap(Throwable wrapped)
      剥离反射引发的InvocationTargetException、UndeclaredThrowableException中间异常,返回业务本身的异常
      Parameters:
      wrapped - 包装的异常
      Returns:
      剥离后的异常
    • getStackElements

      public static StackTraceElement[] getStackElements()
      获取当前栈信息
      Returns:
      当前栈信息
    • getStackElement

      public static StackTraceElement getStackElement(int i)
      获取指定层的堆栈信息
      Parameters:
      i - 层数
      Returns:
      指定层的堆栈信息
      Since:
      4.1.4
    • getRootStackElement

      public static StackTraceElement getRootStackElement()
      获取入口堆栈信息
      Returns:
      入口堆栈信息
      Since:
      4.1.4
    • stacktraceToOneLineString

      public static String stacktraceToOneLineString(Throwable throwable)
      堆栈转为单行完整字符串
      Parameters:
      throwable - 异常对象
      Returns:
      堆栈转为的字符串
    • stacktraceToOneLineString

      public static String stacktraceToOneLineString(Throwable throwable, int limit)
      堆栈转为单行完整字符串
      Parameters:
      throwable - 异常对象
      limit - 限制最大长度
      Returns:
      堆栈转为的字符串
    • stacktraceToString

      public static String stacktraceToString(Throwable throwable)
      堆栈转为完整字符串
      Parameters:
      throwable - 异常对象
      Returns:
      堆栈转为的字符串
    • stacktraceToString

      public static String stacktraceToString(Throwable throwable, int limit)
      堆栈转为完整字符串
      Parameters:
      throwable - 异常对象
      limit - 限制最大长度
      Returns:
      堆栈转为的字符串
    • stacktraceToString

      public static String stacktraceToString(Throwable throwable, int limit, Map<Character,String> replaceCharToStrMap)
      堆栈转为完整字符串
      Parameters:
      throwable - 异常对象
      limit - 限制最大长度
      replaceCharToStrMap - 替换字符为指定字符串
      Returns:
      堆栈转为的字符串
    • isCausedBy

      public static boolean isCausedBy(Throwable throwable, Class<? extends Exception>... causeClasses)
      判断是否由指定异常类引起
      Parameters:
      throwable - 异常
      causeClasses - 定义的引起异常的类
      Returns:
      是否由指定异常类引起
      Since:
      4.1.13
    • getCausedBy

      public static Throwable getCausedBy(Throwable throwable, Class<? extends Exception>... causeClasses)
      获取由指定异常类引起的异常
      Parameters:
      throwable - 异常
      causeClasses - 定义的引起异常的类
      Returns:
      是否由指定异常类引起
      Since:
      4.1.13
    • isFromOrSuppressedThrowable

      public static boolean isFromOrSuppressedThrowable(Throwable throwable, Class<? extends Throwable> exceptionClass)
      判断指定异常是否来自或者包含指定异常
      Parameters:
      throwable - 异常
      exceptionClass - 定义的引起异常的类
      Returns:
      true 来自或者包含
      Since:
      4.3.2
    • isFromOrSuppressedThrowable

      public static boolean isFromOrSuppressedThrowable(Throwable throwable, Class<? extends Throwable> exceptionClass, boolean checkCause)
      判断指定异常是否来自或者包含指定异常
      Parameters:
      throwable - 异常
      exceptionClass - 定义的引起异常的类
      checkCause - 判断cause
      Returns:
      true 来自或者包含
      Since:
      4.4.1
    • convertFromOrSuppressedThrowable

      public static <T extends Throwable> T convertFromOrSuppressedThrowable(Throwable throwable, Class<T> exceptionClass)
      转化指定异常为来自或者包含指定异常
      Type Parameters:
      T - 异常类型
      Parameters:
      throwable - 异常
      exceptionClass - 定义的引起异常的类
      Returns:
      结果为null 不是来自或者包含
      Since:
      4.3.2
    • convertFromOrSuppressedThrowable

      public static <T extends Throwable> T convertFromOrSuppressedThrowable(Throwable throwable, Class<T> exceptionClass, boolean checkCause)
      转化指定异常为来自或者包含指定异常
      Type Parameters:
      T - 异常类型
      Parameters:
      throwable - 异常
      exceptionClass - 定义的引起异常的类
      checkCause - 判断cause
      Returns:
      结果为null 不是来自或者包含
      Since:
      4.4.1
    • getThrowableList

      public static List<Throwable> getThrowableList(Throwable throwable)
      获取异常链上所有异常的集合,如果Throwable 对象没有cause,返回只有一个节点的List
      如果传入null,返回空集合

      此方法来自Apache-Commons-Lang3

      Parameters:
      throwable - 异常对象,可以为null
      Returns:
      异常链中所有异常集合
      Since:
      4.6.2
    • getRootCause

      public static Throwable getRootCause(Throwable throwable)
      获取异常链中最尾端的异常,即异常最早发生的异常对象。
      此方法通过调用Throwable.getCause() 直到没有cause为止,如果异常本身没有cause,返回异常本身
      传入null返回也为null

      此方法来自Apache-Commons-Lang3

      Parameters:
      throwable - 异常对象,可能为null
      Returns:
      最尾端异常,传入null参数返回也为null
    • getRootCauseMessage

      public static String getRootCauseMessage(Throwable th)
      获取异常链中最尾端的异常的消息,消息格式为:{SimpleClassName}: {ThrowableMessage}
      Parameters:
      th - 异常
      Returns:
      消息
      Since:
      4.6.2