Просмотр исходного кода

修改对SearchException的处理

sunyj 9 лет назад
Родитель
Сommit
0e41620046

+ 47 - 3
search-api/src/main/java/com/uas/search/exception/SearchException.java

@@ -12,6 +12,15 @@ public class SearchException extends RuntimeException {
 
 	private String message;
 
+	/**
+	 * 详细信息
+	 */
+	private String detailedMessage;
+
+	public SearchException(String message) {
+		this.message = message;
+	}
+
 	public SearchException(Throwable e) {
 		this.message = getMessage(e);
 	}
@@ -23,7 +32,7 @@ public class SearchException extends RuntimeException {
 	 *            异常
 	 * @return 拼接后的结果
 	 */
-	private String getMessage(Throwable e) {
+	public String getMessage(Throwable e) {
 		StringBuilder sb = new StringBuilder(e.toString());
 		if (e.getCause() != null) {
 			sb.append("\nCaused by: ").append(getMessage(e.getCause()));
@@ -31,8 +40,35 @@ public class SearchException extends RuntimeException {
 		return sb.toString();
 	}
 
-	public SearchException(String message) {
-		this.message = message;
+	/**
+	 * 获取异常及其Cause的StackTrace拼接成的字符串
+	 * 
+	 * @param e
+	 *            异常
+	 * @return 拼接后的结果
+	 */
+	public 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(getMessage(e.getCause()));
+		}
+		return sb.toString();
+	}
+
+	/**
+	 * 获取异常及其Cause的StackTrace用以设置详细信息
+	 * 
+	 * @param e
+	 *            异常
+	 * @return 本SearchException对象
+	 */
+	public SearchException setDetailedMessage(Throwable e) {
+		this.detailedMessage = getDetailedMessage(e);
+		return this;
 	}
 
 	public String getMessage() {
@@ -43,4 +79,12 @@ public class SearchException extends RuntimeException {
 		this.message = message;
 	}
 
+	public String getDetailedMessage() {
+		return detailedMessage;
+	}
+
+	public void setDetailedMessage(String detailedMessage) {
+		this.detailedMessage = detailedMessage;
+	}
+
 }