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;
|
}
|
}
|
}
|