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 楼答案
我应该如何处理这种情况
因此,如果您不使用任何RMI,并且您的应用程序在受保护的环境中运行(并且您想让Sonar满意),请将自定义异常类中的所有字段标记为transient,或者保持原样
如果我们讨论的是分布式环境,那么序列化应该非常小心——一旦序列化了类,它必须具有可预测的行为。在这种情况下,使实例字段成为对象
Serializable
的逻辑状态的一部分,否则-将它们标记为瞬态另外,为什么要用声纳来探测你