3

代码使用 lombok builder 抛出异常:

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

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

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

生成器添加到 stacktrace 的不是 lombok 问题吗?

异常类:

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

1 回答 1

2

确实是一个非常有趣的问题,让我困惑了一会儿。解决方案如下:

堆栈跟踪在异常的构造函数处填充。

如果你不fillInStackTrace()手动调用,那么 Java 会在你调用new. (嗯,JVM 总是会填充它,但它可以被覆盖。)现在你的构造函数到底是在哪里MyException调用的?是的,在build()您的构建器的功能中。等等,这就是您将在堆栈跟踪中看到的内容。

于 2019-11-18T20:40:09.053 回答