【发布时间】:2011-04-13 11:58:53
【问题描述】:
我正在尝试做的事情感觉违反直觉,但 Java 总是让我感到惊讶,所以我试一试。
我在 ESAPI 库的帮助下实现了一个应用程序。这个库提供了自己的例外。除了众所周知的异常行为之外,这些异常还会执行诸如使用 log4j 自动记录日志以及向入侵检测模块提供信息等操作。
现在我想在我的应用程序的所有部分中使用这些功能。每当我的方法抛出异常时,我不会抛出正常异常,而是从新的 EnterpriseSecurityException 扩展而来的自制异常。像魅力一样工作。
但是,如果我使用一个引发正常异常的方法,我该怎么办?假设我想使用 java.io.FileInputStream 读取文件?它找不到文件并抛出 FileNotFoundException。不幸的是,FileNotFoundException 没有提供我自己的异常的功能,因为它没有扩展 EnterpriseSecurityException。
Java 中有什么技巧可以改变方法抛出的异常吗?当我写这篇文章时,这对我来说听起来很奇怪,但也许有人能想出一个解决方案。到目前为止,我唯一的想法是捕获正常异常,提取相关信息,并用它构建一个新异常。但这似乎很粗糙......
【问题讨论】: