Spring의 예외: 오류를 길들이는 방법
그래서 프로젝트에 Spring을 구현하면 머피의 법칙에 따라 예외가 나타납니다. 하지만 당황하지 마십시오. Spring에는 강력한 오류 처리 기능이 있습니다! 이러한 기능을 정확히 어떻게 사용할 수 있는지 알아보겠습니다.
체크된 예외와 체크되지 않은 예외: 왜 모든 것이 그렇게 혼란스럽나요?
Java는 예외를 선택형과 선택 취소형의 두 가지 유형으로 나눕니다. 확인된 예외에는 명시적인 처리가 필요합니다. 사람들이 통과하는 두 개의 횡단보도를 상상해 보세요. 한 건널목은 "엄격한 통제" 표시가 있는 엄격한 검사관이 지키고 있습니다. 여기에서는 모든 사람을 확인하며 통과 허가가 없으면 통과가 허용되지 않습니다. 이 전환은 확인된 예외와 유사합니다. 필수 처리가 필요하며, 그렇지 않으면 프로그램이 컴파일되지 않습니다.
반대로 두 번째 전환은 제어되지 않습니다. 사람들은 아무런 점검도 없이 자유롭고 빠르게 통과합니다. 이는 확인되지 않은 예외와 유사합니다. 이러한 예외는 처리가 필요하지 않으며 오류 확인 없이도 코드를 실행할 수 있습니다. 그러나 오류가 발생하면 "도로"에 예기치 않게 나타납니다.
public void someMethod() throws IOException { throw new IOException("Oops, checked exception!"); }
@ExceptionHandler: 버그가 VIP 대우를 받는 경우
@ExceptionHandler는 지정된 메서드나 클래스에 대해서만 예외를 포착하고 처리하는 개인 "바운서"입니다. 특정 오류에 대해 VIP 처리를 하고 싶다면 메소드에 @ExceptionHandler 주석을 달고 즐겨보세요.
public void someMethod() throws IOException { throw new IOException("Oops, checked exception!"); }
이제 ResourceNotFoundException이 발생할 때마다 사용자에게 무서운 오류 스택이 표시되는 대신 핸들러가 조용히 친숙한 메시지를 인쇄합니다.
@ControllerAdvice: 조언을 주어야 할 때
@ExceptionHandler가 특정 클래스에 대해서만 작동한다면 @ControllerAdvice가 대기열의 왕입니다. 이 주석은 모든 컨트롤러에 적용되므로 버그가 다시는 빠져나가지 않습니다!
@ExceptionHandler(ResourceNotFoundException.class) public ResponseEntity<String> handleResourceNotFound(ResourceNotFoundException ex) { return new ResponseEntity<>("Resource not found: " + ex.getMessage(), HttpStatus.NOT_FOUND); }
이 코드를 사용하면 포착되지 않은 모든 오류를 포착하여 단일 메시지로 처리합니다. 이는 예외에 대한 "모든 것을 포함하는" 설정과 같습니다 - 편리하고 안전합니다.
@ResponseStatus: 예외를 더욱 구체적으로 표현하고 싶을 때
때때로 표준 HTTP 상태가 예외의 본질을 제대로 포착하지 못하는 경우가 있습니다. 그러나 @ResponseStatus를 사용하면 예외를 보다 구체적으로 표현할 수 있습니다.
@ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public ResponseEntity<String> handleGlobalException(Exception ex) { return new ResponseEntity<>("Oops, something went wrong!", HttpStatus.INTERNAL_SERVER_ERROR); } }
이제 ResourceNotFoundException이 발생하면 Spring은 사용자가 수동으로 수행하도록 강요하지 않고 자동으로 404 상태를 반환합니다. 드라마를 추가하는 좋은 방법이지 않나요?
@RestControllerAdvice: REST 애호가를 위한
@RestControllerAdvice는 @ControllerAdvice와 유사하지만 REST 컨트롤러에만 사용됩니다. 즉, HTML 페이지 대신 JSON을 반환하므로 API 생성을 위한 최선의 선택입니다. 진정한 REST 팬을 위한 지원!
public void someMethod() throws IOException { throw new IOException("Oops, checked exception!"); }
이 접근 방식을 사용하면 사용자가 항상 JSON 형식으로 구조화된 응답을 받을 수 있으므로 API가 더욱 사용자 친화적이 됩니다.
맞춤 예외: 표준 예외로는 충분하지 않은 경우
어떤 시점에서는 표준 Exception과 RuntimeException이 상황의 비극을 완전히 표현하지 못한다는 사실을 깨닫게 됩니다. 글쎄, 당신만의 예외를 만들어보세요! 사용자 정의 예외는 약간의 개성을 추가하며 Spring은 여전히 이를 존중하여 처리합니다.
@ExceptionHandler(ResourceNotFoundException.class) public ResponseEntity<String> handleResourceNotFound(ResourceNotFoundException ex) { return new ResponseEntity<>("Resource not found: " + ex.getMessage(), HttpStatus.NOT_FOUND); }
이를 위한 핸들러를 생성하면 애플리케이션 사용자에게 무서운 줄이 아닌 명확한 메시지가 표시됩니다.
결론
Spring의 오류 처리는 약간의 예술입니다. 메소드 수준 처리에서 전역 처리, JSON 응답에서 사용자 정의 상태에 이르기까지 가능성은 정말 무궁무진합니다.
그러므로 @ExceptionHandler, @ControllerAdvice 및 @ResponseStatus를 잡고 예외를 오류 관리의 마스터 클래스로 전환하세요. Spring은 오류를 처리하고 사용자 앞에서 체면을 세울 수 있도록 도와줄 준비가 되어 있습니다
위 내용은 Spring의 예외: 오류를 길들이는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

일부 애플리케이션이 제대로 작동하지 않는 회사의 보안 소프트웨어에 대한 문제 해결 및 솔루션. 많은 회사들이 내부 네트워크 보안을 보장하기 위해 보안 소프트웨어를 배포 할 것입니다. ...

많은 응용 프로그램 시나리오에서 정렬을 구현하기 위해 이름으로 이름을 변환하는 솔루션, 사용자는 그룹으로, 특히 하나로 분류해야 할 수도 있습니다.

시스템 도킹의 필드 매핑 처리 시스템 도킹을 수행 할 때 어려운 문제가 발생합니다. 시스템의 인터페이스 필드를 효과적으로 매핑하는 방법 ...

IntellijideAultimate 버전을 사용하여 봄을 시작하십시오 ...

데이터베이스 작업에 MyBatis-Plus 또는 기타 ORM 프레임 워크를 사용하는 경우 엔티티 클래스의 속성 이름을 기반으로 쿼리 조건을 구성해야합니다. 매번 수동으로 ...

Java 객체 및 배열의 변환 : 캐스트 유형 변환의 위험과 올바른 방법에 대한 심층적 인 논의 많은 Java 초보자가 객체를 배열로 변환 할 것입니다 ...

전자 상거래 플랫폼에서 SKU 및 SPU 테이블의 디자인에 대한 자세한 설명이 기사는 전자 상거래 플랫폼에서 SKU 및 SPU의 데이터베이스 설계 문제, 특히 사용자 정의 판매를 처리하는 방법에 대해 논의 할 것입니다 ...

Redis 캐싱 솔루션은 제품 순위 목록의 요구 사항을 어떻게 인식합니까? 개발 과정에서 우리는 종종 a ... 표시와 같은 순위의 요구 사항을 처리해야합니다.
