在 Java 中,可以使用全局异常处理器(Global Exception Handler)来集中处理异常。要实现全局异常处理,需要创建一个类并使用 @ControllerAdvice
注解标记该类,然后在该类中定义一个或多个方法,并使用 @ExceptionHandler
注解标记这些方法。这样,当应用程序抛出异常时,全局异常处理器会自动捕获并处理这些异常。
以下是一个简单的示例:
- 首先,创建一个名为
GlobalExceptionHandler
的类,并使用@ControllerAdvice
注解标记该类:
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
@ControllerAdvice
public class GlobalExceptionHandler {
// ...
}
- 然后,在该类中定义一个或多个方法,并使用
@ExceptionHandler
注解标记这些方法。例如,以下代码展示了如何处理NullPointerException
和IllegalArgumentException
异常:
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(NullPointerException.class)
@ResponseBody
public ResponseEntity<String> handleNullPointerException(NullPointerException e) {
return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
@ExceptionHandler(IllegalArgumentException.class)
@ResponseBody
public ResponseEntity<String> handleIllegalArgumentException(IllegalArgumentException e) {
return new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_REQUEST);
}
}
在这个示例中,我们定义了两个方法,分别处理 NullPointerException
和 IllegalArgumentException
异常。当应用程序抛出这两种异常时,全局异常处理器会自动捕获并处理这些异常,然后返回相应的 HTTP 状态码和错误信息。
在 Java 中,可以使用全局日志处理器(Global Log Handler)来集中处理日志。要实现全局日志处理,需要创建一个类并使用 @Component
注解标记该类,然后在该类中定义一个或多个方法,并使用 @Slf4j
注解标记这些方法。这样,当应用程序记录日志时,全局日志处理器会自动捕获并处理这些日志。
以下是一个简单的示例:
- 首先,创建一个名为
GlobalLogHandler
的类,并使用@Component
注解标记该类:
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class GlobalLogHandler {
// ...
}
- 然后,在该类中定义一个或多个方法,并使用
@Slf4j
注解标记这些方法。例如,以下代码展示了如何处理不同级别的日志:
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class GlobalLogHandler {
public void handleInfoLog(String message) {
log.info(message);
}
public void handleWarnLog(String message) {
log.warn(message);
}
public void handleErrorLog(String message) {
log.error(message);
}
}
在这个示例中,我们定义了三个方法,分别处理不同级别的日志。当应用程序记录日志时,全局日志处理器会自动捕获并处理这些日志。