我有一个类管理磁盘上的文件,以 xml 的形式保存报告。由于它使用 JAXB(但可以使用任何其他 xml 库,这不相关),它可以生成 jaxb(或任何其他 xml 库)检查异常。
为了保持封装,我应该在我的库的逻辑级别“转换”我的原始库异常。但我不想过多地增加相关性很少、相关性差的课程的数量。由于该类与文件相关,因此我认为 IOException 足以应付这种情况。
public void save(File file) throws IOException {
try{
JAXBContext jc = JAXBContext.newInstance(ArchiveInfo.class);
Marshaller m = jc.createMarshaller();
m.marshal(this, file);
} catch (JAXBException jexc) {
throw new IOException(jexc);
}
}
- 您是否同意此解决方案,是否在简单性和正确性之间进行了很好的权衡?
- 我很幸运,因为我找到了一个合适的例外。如果我不是,我一定会定义我自己的异常,因为使用 Exception 类不是好的设计。(导致调用者捕获异常,也隐式捕获 RuntimeException)。运行时异常在 RuntimeException 类中具有共同的祖先,而所有已检查的异常都没有,这不是异常结构中的异常吗?