91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

如何處理Spring Boot中MyBatis的異常

小樊
90
2024-09-11 20:02:47
欄目: 編程語言

在Spring Boot中使用MyBatis時,處理異常的方法有以下幾種:

  1. 使用try-catch語句捕獲異常:

在需要處理異常的地方,使用try-catch語句捕獲異常,然后在catch塊中處理異常。例如:

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    public User getUserById(int id) {
        try {
            return userMapper.getUserById(id);
        } catch (Exception e) {
            // 處理異常,例如打印日志、拋出自定義異常等
            e.printStackTrace();
            throw new CustomException("獲取用戶信息失敗");
        }
    }
}
  1. 使用@ControllerAdvice@ExceptionHandler注解處理全局異常:

創建一個全局異常處理類,使用@ControllerAdvice注解標記該類。在該類中,使用@ExceptionHandler注解定義處理特定異常的方法。例如:

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(value = Exception.class)
    public ResponseEntity<Object> handleException(Exception e) {
        // 處理異常,例如打印日志、返回錯誤信息等
        e.printStackTrace();
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("服務器內部錯誤");
    }

    @ExceptionHandler(value = CustomException.class)
    public ResponseEntity<Object> handleCustomException(CustomException e) {
        // 處理自定義異常
        return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e.getMessage());
    }
}
  1. 使用@ResponseStatus注解定義特定異常的HTTP狀態碼:

在自定義異常類上使用@ResponseStatus注解,指定異常對應的HTTP狀態碼。例如:

@ResponseStatus(value = HttpStatus.BAD_REQUEST, reason = "獲取用戶信息失敗")
public class CustomException extends RuntimeException {
    public CustomException(String message) {
        super(message);
    }
}

這樣,當拋出CustomException異常時,Spring Boot會自動將其轉換為HTTP 400 Bad Request響應。

  1. 使用ErrorController處理錯誤頁面:

實現ErrorController接口,創建一個錯誤處理控制器。在該控制器中,根據不同的異常類型返回不同的錯誤頁面。例如:

@Controller
public class MyErrorController implements ErrorController {

    @RequestMapping("/error")
    public String handleError(HttpServletRequest request) {
        Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);

        if (status != null) {
            int statusCode = Integer.parseInt(status.toString());

            if (statusCode == HttpStatus.NOT_FOUND.value()) {
                return "404";
            } else if (statusCode == HttpStatus.INTERNAL_SERVER_ERROR.value()) {
                return "500";
            }
        }
        return "error";
    }

    @Override
    public String getErrorPath() {
        return "/error";
    }
}

這樣,當發生異常時,Spring Boot會自動將請求重定向到/error路徑,由MyErrorController處理并返回相應的錯誤頁面。

0
济南市| 临邑县| 郓城县| 隆子县| 乌拉特后旗| 乌恰县| 灌阳县| 凤凰县| 喀喇| 腾冲县| 岳阳市| 舒兰市| 彩票| 万年县| 奇台县| 贵港市| 河北区| 北海市| 墨江| 霸州市| 新余市| 东光县| 武宁县| 宜章县| 招远市| 西林县| 灌阳县| 永州市| 舒城县| 克什克腾旗| 手机| 永胜县| 安阳市| 崇阳县| 珲春市| 潮州市| 潼南县| 会东县| 兴文县| 进贤县| 安西县|