본문 바로가기

전체 글

(87)
[validation] @RequestParam으로 들어오는 파라미터의 exception handling / @RequestBody로 들어오는 객체의 exception handling @RequestParam과 @RequestBody는 같은 어노테이션을 사용하지만, 신기하게도 exception이 다르게 발생한다. 주로 발생하는 exception을 정리하고, 어떻게 handling 할 지 알아보겠다. @RequestParam 1. MissingServletRequestParameterException 필수적인 파라미터가 존재하지 않는 경우 해당 exception이 발생한다. 기본적으로 파라미터에 대해 required option이 true로 되어있기 때문에, RequestParam을 적용하고 파라미터를 넣어주지 않았다면 발생할 exception이다. [ErrorCode] INVALID_INPUT_VALUE(400, "COMMON-001", "유효성 검증에 실패한 경우") 2. Metho..
[validation] @RequestParam에서 @NotNull, @NotEmpty, @NotBlank를 어떻게 사용할 것인가 @NotNull과 @NotBlank의 차이가 뭔지 살펴보고, 적용해보고 있었다. 그러던 중No validator could be found for constraint 'javax.validation.constraints.NotBlank' validating type 'java.lang.Integer'. 이라는 에러가 발생했고, 검색 결과 @NotBlank(또는 @NotEmpty)는 String 타입에 대한 validation annotation이였다. 만약 null값을 허용하고 싶지 않다면, @NotNull을 넣어주어야 한다. 그런데 여기서 생각해볼 문제가 하나 더 있다. "굳이 @RequestParam을 사용하는 곳에서 @NotNull이 필요한가?" 잘 생각해보면 필요하지 않다는 것을 알 수 있다. R..
[Error] java equals 사용 시 NPE 해결하는 습관 isDeleted field에, "Y", "N", null 값만 들어올 수 있도록 지정했기 때문에, NPE가 생기는 것이 이상해서 debugging을 진행하였다. 문제는, isDeleted field의 값을 체크하는 것을 null부터 하지 않았던 것이였다. null일 경우에, 이미 앞에서 equals 메소드를 진행할 때 NPE가 나버리기 때문이다. 앞에서부터 차례로 조건을 확인한다는 것을 기억하자. 코딩테스트에서도 비슷한 경우가 있다. plain에 대한 bfs를 진행할 때, plain의 범위 안에 들어있는지 확인한 후 방문 여부를 확인한다(0