<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ``` /** * @author 張躍帥 * @Description: 全局異常處理器 * @date 2020/08/12 */ @Slf4j @ControllerAdvice @ResponseBody public class GlobalException { /** * 捕獲-自定義異常 */ @ExceptionHandler(MyException.class) public MyResult myException(MyException e, HttpServletRequest request) { // 獲取參數 String userFullName = this.getReqUserFullName(request); String currentReqURL = request.getRequestURI(); log.error(">>> 自定義異常→ 請求用戶:{},請求URL為:{},具體信息為:{}", userFullName, currentReqURL, e); // 返回 return MyResult.error(e.getCode(), e.getMsg()); } /** * 請求參數缺失異常 */ @ExceptionHandler(MissingServletRequestParameterException.class) public MyResult reqParamException(MissingServletRequestParameterException e, HttpServletRequest request) { // 獲取參數 String userFullName = this.getReqUserFullName(request); String currentReqURL = request.getRequestURI(); // 獲取參數 String parameterType = e.getParameterType(); String parameterName = e.getParameterName(); String msg = StrUtil.format("請求參數異常:請求的參數{},與接收{}的類型不匹配", parameterName, parameterType); log.error(">>> 請求參數異常→ 請求用戶:{},請求URL為:{},具體信息為:{}", userFullName, currentReqURL, e); // 返回 return MyResult.error(CommonExceptionEnum.ERROR_400.getCode(), msg); } /** * 攔截參數格式傳遞異常 */ @ExceptionHandler(HttpMessageNotReadableException.class) public MyResult paramFormatException(HttpMessageNotReadableException e, HttpServletRequest request) { // 獲取參數 String userFullName = this.getReqUserFullName(request); String currentReqURL = request.getRequestURI(); log.error(">>> 參數格式傳遞異常→ 請求用戶:{},請求URL為:{},具體信息為:{}", userFullName, currentReqURL, e); // 返回 return MyResult.error(CommonExceptionEnum.ERROR_400.getCode(), "請求JSON參數格式不正確,請檢查參數格式"); } /** * 捕獲-字段值,超出數據庫字段的長度 */ @ExceptionHandler(DataIntegrityViolationException.class) public MyResult fieldValLengthException(DataIntegrityViolationException e, HttpServletRequest request) { // 獲取參數 String userFullName = this.getReqUserFullName(request); String currentReqURL = request.getRequestURI(); log.error(">>> 字段值異常→ 請求用戶:{},請求URL為:{},具體信息為:{}", userFullName, currentReqURL, e); // 返回 return MyResult.error(CommonExceptionEnum.ERROR_400.getCode(), "當前字段值:超出數據庫字段的存儲長度"); } /** * 主鍵或unique索引,數據重復異常 */ @ExceptionHandler(DuplicateKeyException.class) public MyResult duplicateKeyException(DuplicateKeyException e, HttpServletRequest request) { // 獲取參數 String userFullName = this.getReqUserFullName(request); String currentReqURL = request.getRequestURI(); log.error(">>> 主鍵或unique索引重復異常→ 請求用戶:{},請求URL為:{},具體信息為:{}", userFullName, currentReqURL, e); // 返回 return MyResult.error(CommonExceptionEnum.ERROR_400.getCode(), "主鍵或unique索引重復異常:" + e.getMessage()); } /** * Mybatis系統異常 */ @ExceptionHandler(MyBatisSystemException.class) public MyResult myBatisException(MyBatisSystemException e, HttpServletRequest request) { // 獲取參數 String userFullName = this.getReqUserFullName(request); String currentReqURL = request.getRequestURI(); log.error(">>> Mybatis系統異常→ 請求用戶:{},請求URL為:{},具體信息為:{}", userFullName, currentReqURL, e); // 獲取異常信息 String msg = e.getMessage(); // 判斷-是否包含 if (msg.contains("CannotFindDataSourceException")) { // 返回 return MyResult.error(CommonExceptionEnum.ERROR_400.getCode(), "mybatis未找到數據源,請聯系管理員"); } // 返回 return MyResult.error(CommonExceptionEnum.ERROR_400.getCode(), "mybatis異常:" + msg); } /** * 攔截請求方式的異常 */ @ExceptionHandler(HttpRequestMethodNotSupportedException.class) public MyResult reqTypeException(HttpServletRequest request) { // 獲取參數 String userFullName = this.getReqUserFullName(request); String currentReqURL = request.getRequestURI(); // 參數-變量 String msg = null; // 判斷-GET請求 if (ServletUtil.isGetMethod(request)) { msg = "不支持該請求方法,請求方法為GET"; } // 判斷-POST請求 if (ServletUtil.isPostMethod(request)) { msg = "不支持該請求方法,請求方法為POST"; } log.error(">>> 請求方式異常→ 請求用戶:{},請求URL為:{},具體信息為:{}", userFullName, currentReqURL, msg); // 返回 return MyResult.error(CommonExceptionEnum.ERROR_400.getCode(), msg); } /** * 文件上傳的異常 */ @ExceptionHandler(MultipartException.class) public MyResult uploadFileException(Exception e, HttpServletRequest request) { // 獲取參數 String userFullName = this.getReqUserFullName(request); String currentReqURL = request.getRequestURI(); // 參數-變量 String msg = null; // 判斷 if (e.getCause().getCause() instanceof FileSizeLimitExceededException) { msg = "文件上傳過大[單文件大小不得超過500M]"; } else if (e.getCause().getCause() instanceof SizeLimitExceededException) { msg = "文件上傳過大[總上傳文件大小不得超過1G]"; } else { msg = "文件上傳失敗"; } log.error(">>> 文件上傳異常→ 請求用戶:{},請求URL為:{},具體信息為:{}", userFullName, currentReqURL, msg); // 返回 return MyResult.error(CommonExceptionEnum.ERROR_400.getCode(), msg); } /** * 攔截未知的運行時異常 */ @ExceptionHandler(Throwable.class) public MyResult serverException(Throwable e, HttpServletRequest request) { // 獲取參數 String userFullName = this.getReqUserFullName(request); String currentReqURL = request.getRequestURI(); // 獲取異常信息 String msg = e.getMessage(); // 判斷-是否包含 if (msg.contains("SQLSyntaxErrorException")) { log.error(">>> SQL語句錯誤異常→ 請求用戶:{},請求URL為:{},具體信息為:{}", userFullName, currentReqURL, e); // 返回 return MyResult.error(CommonExceptionEnum.ERROR_400.getCode(), "SQL語句錯誤異常:" + msg); } else { log.error(">>> 服務器運行異常→ 請求用戶:{},請求URL為:{},具體信息為:{}", userFullName, currentReqURL, e); } // 返回 return MyResult.error(CommonExceptionEnum.ERROR_500.getCode(), "服務器運行異常:" + msg); } /*** * 獲取請求用戶全稱 */ private String getReqUserFullName (HttpServletRequest request) { // 變量 String userFullName = null; // 變量-是否放行請求URL Boolean doReqURL = false; // 獲取請求路徑 String servletPath = request.getServletPath(); // 獲取不攔截的URL List<String> satokenFreeList = SatokenFreeRedisCache.getSatokenFreeList(); // 判斷 if (satokenFreeList != null && satokenFreeList.size() > 0) { // 創建路徑匹配器 final PathMatcher pathMatcher = new AntPathMatcher(); // 遍歷 for (String satokenFree : satokenFreeList) { // 判斷 if (pathMatcher.match(satokenFree, servletPath)) { // 放行 doReqURL = true; // 如果URL匹配成功就不循環了,直接退出循環 break; } } } // 判斷 if (false == doReqURL) { // 獲取當前登錄用戶 SatokenUser satokenUser = LoginUserUtil.getLoginSatokenUserByToken(); // 獲取參數 String userName = satokenUser.getTrueName(); Long userId = satokenUser.getUserId(); // 賦值 userFullName = (userName + "-" + userId); } // 返回 return userFullName; } }
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看