|
|
@@ -2,19 +2,20 @@ package com.uas.eis.exception;
|
|
|
|
|
|
import java.io.PrintWriter;
|
|
|
import java.io.StringWriter;
|
|
|
+import java.sql.SQLRecoverableException;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpSession;
|
|
|
|
|
|
import org.apache.log4j.Logger;
|
|
|
import org.springframework.http.HttpStatus;
|
|
|
+import org.springframework.jdbc.BadSqlGrammarException;
|
|
|
import org.springframework.ui.ModelMap;
|
|
|
import org.springframework.web.bind.annotation.ControllerAdvice;
|
|
|
import org.springframework.web.bind.annotation.ExceptionHandler;
|
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
import org.springframework.web.bind.annotation.ResponseStatus;
|
|
|
|
|
|
-
|
|
|
@ControllerAdvice
|
|
|
public class ExceptionHandlerAdvice {
|
|
|
|
|
|
@@ -41,6 +42,58 @@ public class ExceptionHandlerAdvice {
|
|
|
return map;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 处理连接池的连接失效抛出异常
|
|
|
+ *
|
|
|
+ * @see SQLRecoverableException
|
|
|
+ * @param ex
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @ExceptionHandler(SQLRecoverableException.class)
|
|
|
+ @ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
|
|
|
+ @ResponseBody
|
|
|
+ public ModelMap handleSQLRecoverableExceptionError(SQLRecoverableException ex, HttpServletRequest request) {
|
|
|
+ ModelMap map = new ModelMap();
|
|
|
+ map.put("exceptionInfo", getErrorStack(request, ex, "连接异常"));
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 处理参数错误抛出异常
|
|
|
+ *
|
|
|
+ * @see IllegalArgumentException
|
|
|
+ * @param ex
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @ExceptionHandler(IllegalArgumentException.class)
|
|
|
+ @ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
|
|
|
+ @ResponseBody
|
|
|
+ public ModelMap handleIllegalArgumentExceptionError(IllegalArgumentException ex, HttpServletRequest request) {
|
|
|
+ logger.error(ex.getCause());
|
|
|
+ ex.printStackTrace();
|
|
|
+ ModelMap map = new ModelMap();
|
|
|
+ map.put("exceptionInfo", getErrorStack(request, ex, "参数错误"));
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * SQL语法错误
|
|
|
+ *
|
|
|
+ * @param ex
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @ExceptionHandler(BadSqlGrammarException.class)
|
|
|
+ @ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
|
|
|
+ @ResponseBody
|
|
|
+ public ModelMap handleBadSqlGrammarExceptionError(BadSqlGrammarException ex, HttpServletRequest request) {
|
|
|
+ logger.error(ex);
|
|
|
+ ModelMap map = new ModelMap();
|
|
|
+ ex.printStackTrace();
|
|
|
+ map.put("exceptionInfo", getErrorStack(request, ex, "程序错误"));
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 封装错误信息,按用户设置是否显示栈信息
|
|
|
*
|