堆栈跟踪中包含 Lombok 生成器的异常

Exception with Lombok builder included in stacktrace

代码使用 lombok 生成器抛出异常:

throw MyException.builder().error(ErrorCode.GeneralError).message(error).build();

Stacktrace 将异常的根源显示为生成器方法 (@Builder)

com.MyException
    at com.MyException$MyExceptionBuilder.build(MyException.java:9)
    ...

builder 添加到 stacktrace 不是 lombok issue 吗?

异常Class:

@Builder
public class MyException extends Exception {
    private static final long serialVersionUID = -7842978360324381658L;
    ErrorCode error;
    RequestVO request;
    ResponseVO response;
    String message;

确实是个很有意思的问题,让我一度疑惑。解决方法如下:

The stack trace is filled in at the point of the exception’s constructor.

如果您不手动调用fillInStackTrace(),那么Java会在您调用new的地方填写。 (好吧,JVM 将始终填充它,但它可以被覆盖。)现在 您的 MyException 构造函数究竟在哪里 被调用了?是的,在您的构建器的 build() 函数中。 Et voilà,这就是您将在堆栈跟踪中看到的内容。