我正在使用反射将一些数据添加到来自第三方库的类中的私有变量.一路上有大约四种不同的例外可以抛出; 所有这些都与反思有关,而且所有这些都不太可能发生.我正在硬编码所涉及的类和变量的名称.我不太可能收到任何未找到的类或未找到字段的错误,除非该库有一天升级并且已经发生了显着变化.
我宁愿不为我的调用者声明所有这四个异常来处理.他可能永远不会见到他们.我想抓住所有这些并抛出另一个例外,说"发生了Java反射错误;可能是库已经以与此方法不兼容的方式升级和更改了." 是否存在我可以抛出的标准Java异常,它表示只是一般反射错误?我应该定义自己的吗?或者最好只声明这个方法可以抛出所有可能的反射异常?
我经常问自己这些问题:
是否可以调用此方法以不同方式处理这些不同的异常类型?
......或者他们会一直对待他们吗?
呼叫者/用户甚至可以从此错误中恢复吗?
如果调用代码可能会将所有这四个异常都视为相同(作为一个不可恢复的错误),那么捕获每个异常并重新抛出更一般的(单个)异常绝对是有意义的.如果这样做,请确保将生成的异常作为内部异常附加,以帮助进行另一端的任何调试或故障排除.