68 lines
1.7 KiB
Java
68 lines
1.7 KiB
Java
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;
|
||
}
|
||
}
|
||
}
|