在Spring中使用`@ControllerAdvice`和`@ExceptionHandler`注解来实现全局异常处理。具体实现步骤如下:
1. 在您的项目中创建一个类,并使用`@ControllerAdvice`注解标注该类。例如:
@ControllerAdvice
public class GlobalExceptionHandler {
// ...
}
2. 在该类中创建一个方法,并使用`@ExceptionHandler`注解标注该方法。方法的参数类型应该是您想要捕获的异常类型。例如:
@ExceptionHandler(ServiceException.class)
public ResponseEntity<String> handleServiceException(ServiceException ex) {
// ...
}
3. 在该方法中,您可以根据需要捕获并处理异常。如果您想要输出具体发生异常的代码行,可以使用Java的反射机制获取异常堆栈信息。例如:
StackTraceElement[] stackTrace = ex.getStackTrace();
if (stackTrace != null && stackTrace.length > 0) {
String className = stackTrace[0].getClassName();
String methodName = stackTrace[0].getMethodName();
int lineNumber = stackTrace[0].getLineNumber();
String message = String.format("Exception happened in %s.%s() at line %d", className, methodName, lineNumber);
// ... 输出message或将其记录到日志中
}
希望这些信息对您有所帮助!