原创 

关于spring 全局异常定义捕获service层异常 并输出具体发生异常代码行

分类:spring,java    557人阅读    IT小君  2023-06-27 09:56

在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或将其记录到日志中

   }

希望这些信息对您有所帮助!

支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

 工具推荐 更多»