package com.uas.finance.util;

/**
 * 处理异常的工具类
 * 
 * @author sunyj
 * @since 2017年8月10日 下午3:26:55
 */
public class ExceptionUtils {

	/**
	 * 获取异常及其Cause拼接成的字符串
	 * 
	 * @param e
	 *            异常
	 * @return 拼接后的结果
	 */
	public static String getMessage(Throwable e) {
		StringBuilder sb = new StringBuilder(e.toString());
		if (e.getCause() != null) {
			sb.append("\nCaused by: ").append(getMessage(e.getCause()));
		}
		return sb.toString();
	}

	/**
	 * 获取异常及其Cause的StackTrace拼接成的字符串
	 * 
	 * @param e
	 *            异常
	 * @return 拼接后的结果
	 */
	public static String getDetailedMessage(Throwable e) {
		StringBuilder sb = new StringBuilder(e.toString());
		StackTraceElement[] stackTraceElements = e.getStackTrace();
		for (StackTraceElement stackTraceElement : stackTraceElements) {
			sb.append("\n\t").append(stackTraceElement.toString());
		}
		if (e.getCause() != null) {
			sb.append("\nCaused by: ").append(getDetailedMessage(e.getCause()));
		}
		return sb.toString();
	}
}
