我有一个域模型类,该类具有toString实现,如下所示:
public String toString() {
try {
return getX() + "\n"
getY() + "\n"
getZ(); //etc.
} catch(Exception e) {
throw new RuntimeException(e);
}
}
Run Code Online (Sandbox Code Playgroud)
的方法getX(),getY()和getZ()不是简单的吸气剂,它们可以在后台预定义的键-值对的静态地图执行查找,通常查找。他们throws SomeCheckedException中有些人签名。
我的印象是,这是不好的做法,并且有“代码异味”。toString()甚至需要进行此检查的事实对我来说都是不良设计的征兆。但我的一位同事,究竟是错捕的一般要求Exception在toString(),因为抓住了Exception进一步传播。
我认为它至少违反了KISS原则,因为这样的简单方法toString()表示需要特殊的异常处理。
那么在toString()中包含一个包罗万象的块是否有代码味道?
我发现的答案是针对捕获通用的一般情况,Exception而我大多数人都同意,如果您正在执行通用错误处理机制或批处理,那么它有望适用于通用异常。这个论点在我们的讨论中没有说服力,所以我很好奇其他观点。