【发布时间】:2013-06-13 18:22:30
【问题描述】:
我看到很多关于如何让 Intellij 打破异常的问题。我正在尝试做一些不同的事情:我想在断点处抛出一个异常,以便我可以看到如果在该代码处发生异常会发生什么。
我已经找到了强制执行此操作的方法。例如,如果我有一个名为willBeUsed 的变量,我可以打断点并添加一个显示willBeUsed = null 的手表。这将触发 NullPointerException 最终。
但我现在想发送IOException 看看会发生什么。没有办法欺骗我的代码这样做。当我添加一块写着throw new IOException() 的手表时,它给了我一个错误,说“意外的令牌”。
作为一种解决方法,我可以修改代码以引发异常并重新部署。但我想知道是否有办法在调试器中执行此操作而无需修改源代码。
【问题讨论】:
-
不太可能有办法按照您的要求进行操作。我建议研究一种更容易促进这种测试的不同设计——例如dependency injection。
-
@RobI 依赖注入很好。我看不出它对我有什么帮助。你能详细说明一下吗?
-
简短的想法:创建一个接口来执行您在有时会引发异常的代码块中所做的事情(例如,
IODoer和do()方法)。您真正的实现是在一个具体类IODoerImpl中,包含所有真实代码,但您有另一个具体类TestIODoer,每次调用它的do()方法时,或每隔一次或任何时候都会引发异常。 .. 通常你的程序使用真正的实现,但是在测试期间你可以注入这个测试类来代替。
标签: java intellij-idea