예외 3

스프링으로 예외처리와 반복 문제 해결

서비스 계층은 특정 기술에 의존하지 않고, 순수하게 유지하는 것이 좋은데 그러려면 예외에 대한 의존도 해결해야 한다. 서비스 계층에서 처리할 수 없는 예외에 대한 의존을 제거하려면 체크 예외를 런타임 예외로 전환해서 서비스 계층에 던져야 한다. 그러면 서비스 계층에서 무시할 수 있기 때문에, 특정 구현 기술에 의존하는 부분을 제거하고 서비스 계층을 순수하게 유지할 수 있다. 인터페이스 인터페이스를 도입해서 구현 기술의 버전이 바뀌면 쉽게 변경할 수 있도록 할 수 있다. 하지만 인터페이스 구현체가 체크 예외를 던지려면, 인터페이스 메서드에 먼저 체크 예외를 던지는 부분이 있어야 한다. 인터페이스가 특정 구현 기술에 종속적인 체크 예외를 사용하게 되면 순수한 인터페이스를 만들 수 없다. 인터페이스를 만드는 ..

Spring 2024.02.19

자바의 예외

Object: 예외도 객체. 모든 객체의 최상의 부모는 Object이다. Throwable: 최상위 예외. Error 메모리 부족, 스택오버플로우 JVM이나 하드웨어 등 시스템의 문제로 발생하는 것. 애플리케이션 내 코드로 해결할 수 없다. 상위 예외를 catch로 잡으면 그 하위 예외까지 잡는다. 따라서 상위 예외인 Throwable도 잡으면 Error도 함께 잡을 수 있기 때문에 잡으면 안된다. Exception부터 필요한 예외라고 생각하고 잡으면 된다. Exception 사용자의 잘못된 조작이나 개발자의 코딩 로직 실수로 인해 발생하는 프로그램 오류 예외처리 코드를 통해 프로그램을 종료하지 않고 다시 정상 실행상태가 되도록 할 수 있다. Checked Exception과 Unchecked Excep..

Java 2024.02.14

API 예외 처리

API는 각 오류 상황에 맞는 오류 응답 스펙을 정하고, JSON으로 데이터를 내려주어야 한다. 스프링 부트가 제공하는 BasicErrorController는 HTML 페이지를 제공하는 경우에는 편리하지만, API 오류 처리는 각각의 컨트롤러나 예외마다 서로 다른 응답 결과를 출력해야 할 수도 있기 때문에 복잡하다. 'IllegalArgumentException'이 일어나고 아무런 처리를 안해주면 500 에러가 발생하는데 이것을 400에러로 바꾸어 주려면 'ExceptionResolver'를 활용해야 한다. HandlerExceptionResolver 활용 예외 상태 코드 반환 예외를 response.sendError(xxx)로 변경해서 서블릿에서 상태 코드에 따른 오류를 처리하도록 함 이후 WAS는 서..

Spring 2024.01.13
728x90