com.ctrip.framework.apollo.util.ExceptionUtil Maven / Gradle / Ivy
The newest version!
package com.ctrip.framework.apollo.util;
import java.util.List;
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
/**
* @author Jason Song([email protected])
*/
public class ExceptionUtil {
/**
* Assemble the detail message for the throwable with all of its cause included (at most 10 causes).
* @param ex the exception
* @return the message along with its causes
*/
public static String getDetailMessage(Throwable ex) {
if (ex == null || Strings.isNullOrEmpty(ex.getMessage())) {
return "";
}
StringBuilder builder = new StringBuilder(ex.getMessage());
List causes = Lists.newLinkedList();
int counter = 0;
Throwable current = ex;
//retrieve up to 10 causes
while (current.getCause() != null && counter < 10) {
Throwable next = current.getCause();
causes.add(next);
current = next;
counter++;
}
for (Throwable cause : causes) {
if (Strings.isNullOrEmpty(cause.getMessage())) {
counter--;
continue;
}
builder.append(" [Cause: ").append(cause.getMessage());
}
builder.append(Strings.repeat("]", counter));
return builder.toString();
}
}