有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中自定义异常中的序列化字段

假设我有我的自定义RuntimeException,其中MyEntity是JPA@Entity

@Getter
public class MyEntityAlreadyExistingException extends RuntimeException {

    private final MyEntity myEntity;

    public MyEntityAlreadyExistingException(MyEntity myEntity) {
        super(MessageFormat.format("MyEntity with name \"{0}\" already exists", myEntity.getName()));
        this.myEntity = myEntity;
    }
}

声纳提示我使myEntity暂时或可序列化

我应该如何处理这种情况

我不使用任何RMI,远程处理。这是一个相对简单的SpringBootWeb应用程序,带有JPA

如果我使myEntity可序列化,那么我以后可以利用哪些优势


共 (1) 个答案

  1. # 1 楼答案

    我应该如何处理这种情况

    因此,如果您不使用任何RMI,并且您的应用程序在受保护的环境中运行(并且您想让Sonar满意),请将自定义异常类中的所有字段标记为transient,或者保持原样

    如果我们讨论的是分布式环境,那么序列化应该非常小心——一旦序列化了类,它必须具有可预测的行为。在这种情况下,使实例字段成为对象Serializable的逻辑状态的一部分,否则-将它们标记为瞬态

    另外,为什么要用声纳来探测你