>  기사  >  Java  >  Spring Boot 애플리케이션에서 예외 및 오류를 처리하는 방법

Spring Boot 애플리케이션에서 예외 및 오류를 처리하는 방법

WBOY
WBOY원래의
2023-06-23 08:38:291703검색

Spring Boot 애플리케이션을 개발하다 보면 데이터베이스 연결 예외, 코드 로직 오류, 사용자 권한 예외, 네트워크 연결 끊김 등 다양한 예외와 오류가 필연적으로 발생하게 됩니다. 이러한 예외 및 오류는 애플리케이션의 안정성과 신뢰성에 큰 영향을 미치므로 애플리케이션이 계속 실행될 수 있도록 적시에 이러한 예외를 처리해야 합니다.

이 글에서는 예외 캡처, 오류 디버깅 및 해결, 예외 로깅 등을 포함하여 Spring Boot 애플리케이션에서 예외 및 오류를 처리하는 방법을 소개합니다. 구체적인 내용은 다음과 같습니다.

예외 포착 및 처리

  1. try-catch 문

프로그램 실행 중 예외를 포착하려면 코드에 try-catch 문을 추가하세요. 프로그램에서 예외가 발생하면 catch 문 블록에 들어가게 됩니다. 이 블록에 예외 정보를 로그에 인쇄하거나 프런트엔드 사용자에게 반환하는 등의 논리를 추가할 수 있습니다.

샘플 코드:

try {
    // 可能发生异常的代码块
} catch (Exception e) {
    // 异常处理逻辑
}
  1. @ControllerAdvice 주석

@ControllerAdvice는 Spring MVC에서 전역적으로 예외를 처리하기 위해 Spring 프레임워크에서 제공하는 주석입니다. 이 주석을 통해 전역 예외 처리 논리를 정의하고 모든 예외를 균일하게 처리할 수 있습니다.

샘플 코드:

@ControllerAdvice
public class GlobalExceptionHandler {
 
    @ExceptionHandler(value = Exception.class)
    public ResponseEntity<Object> handleException(Exception e) {
        // 异常处理逻辑
        return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
    }
}

위 코드에서 handlerException 메소드는 모든 예외 예외를 처리하고 오류 정보 및 HTTP 상태 코드와 함께 ResponseEntity 객체를 반환할 수 있습니다. 애플리케이션에서 예외 예외가 발생하면 예외 처리를 위해 이 메서드가 호출됩니다.

  1. 사용자 정의 예외 클래스

예외를 처리할 때 특정 유형의 예외를 나타내도록 예외 클래스를 사용자 정의할 수도 있습니다. 예외 클래스를 사용자 정의하면 프로그램에 예외 개체를 발생시켜 프로그램을 더 명확하고 이해하기 쉽게 만드는 동시에 전역 예외 처리기에서 대상 예외 처리를 수행할 수도 있습니다.

샘플 코드:

// 自定义异常类
public class MyException extends Exception {
 
    public MyException(String message) {
        super(message);
    }
}

// 抛出自定义异常
if (someCondition) {
    throw new MyException("发生了 MyException 异常");
}

// 异常处理逻辑
@ControllerAdvice
public class GlobalExceptionHandler {
 
    @ExceptionHandler(value = MyException.class)
    public ResponseEntity<Object> handleMyException(MyException e) {
        // 自定义异常处理逻辑
        return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
    }
}

위 코드에서는 프로그램이 특정 조건을 충족할 때 발생하는 MyException 예외 클래스를 정의합니다. 전역 예외 처리기에서는 @ExceptionHandler(value = MyException.class) 주석을 사용하여 메서드가 MyException 유형의 예외를 처리할 수 있음을 나타냅니다.

오류 디버깅 및 해결

  1. 디버그 모드 디버깅

디버깅은 애플리케이션 오류를 해결하는 열쇠입니다. 프로그램을 디버깅하면 프로그램 상태, 변수 값, 실행 경로 등의 정보를 확인하여 오류 원인을 찾을 수 있습니다. Spring Boot 애플리케이션에서는 로그 수준을 DEBUG로 설정하여 디버깅할 수 있습니다.

application.properties 파일에 다음 코드를 추가하세요.

logging.level.root=DEBUG

위 코드에서 로그 수준 루트를 DEBUG로 설정하면 프로그램 로그에 더 많은 디버깅 정보가 출력됩니다.

  1. Logging

오류 로그를 기록하는 것은 오류를 찾는 효과적인 방법입니다. Spring Boot 애플리케이션에는 오류 로그를 기록할 수 있는 로그백이라는 로깅 프레임워크가 함께 제공됩니다. logback.xml 파일에서는 로그 출력 형식, 로그 파일 저장 경로 등을 구성할 수 있습니다.

샘플 코드:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/springbootdemo.log</file>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>logs/springbootdemo.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>10MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>10GB</totalSizeCap>
        </rollingPolicy>
    </appender>
 
    <logger name="com.yourpackage" level="INFO"/>
 
    <root level="INFO">
        <appender-ref ref="fileAppender"/>
    </root>
</configuration>

위 코드에서는 지정된 파일에 로그를 출력하기 위해 fileAppender라는 어펜더를 추가했습니다. 이 중 RollingPolicy는 파일 롤링 정책을 구성하는 데 사용되며 maxFileSize는 단일 로그 파일의 크기를 설정하고 maxHistory는 로그 파일 저장 일수를 설정하며 totalSizeCap은 로그 파일의 전체 크기를 설정하는 데 사용됩니다.

결론

Spring Boot 애플리케이션에서 예외 및 오류 처리는 매우 중요한 부분입니다. 적절한 예외 포착 및 처리, 디버깅 기술 및 로깅을 통해 프로그램의 안정성과 신뢰성을 보장하여 사용자에게 더 나은 서비스를 제공할 수 있습니다.

위 내용은 Spring Boot 애플리케이션에서 예외 및 오류를 처리하는 방법에 대한 몇 가지 기본 팁과 방법입니다. 모든 사람에게 도움이 되기를 바랍니다.

위 내용은 Spring Boot 애플리케이션에서 예외 및 오류를 처리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.