调试时强制exception

是否可以在调试时强制抛出exception。

让我举个例子:我正在调试一些从互联网上下载页面的代码。 当Internet连接丢失或网卡关闭时,应抛出IOException,而不是执行阻塞(在第二行)

URLConnection connection = requestURL.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); 

我需要一种方法来强制抛出exception, 同时调试代码阻塞,所以我可以跳转到catch块。

我正在使用netbeans BTW。

执行线程暂停时手动添加Debugging =。

编辑 :换句话说,我需要注入 – 在运行时调用exception,而不影响当前代码!

谢谢。

我会找到正在等待的变量,并在eclipse的表达式窗口中,对该变量调用notify,然后我将使该变量null ,以便synchronized块将抛出NullPointerException

在eclipse Debug透视图中,在Expressions视图中,只需添加新表达式: throw new Exception("test") 。 我认为NetBeans有类似的东西。

我认为您需要做的是将该代码包装在FutureTask中并超时,让主线程等待超时或完成任务。

您还可以使用一些其他系统属性,仅在测试模式下抛出exception

看看这篇文章 (免责声明,我写了)

希望能帮助到你

为什么不暂时修改代码以便生成exception? ( throw new IOException(...) )。 或者,断开与互联网的连接并尝试运行它。

如果您正在等待(阻止)线程,则无法对其进行多少操作。 你必须interrupt()等待的线程。 JVM似乎有这个选项 ,你只需要在调试器中找到它。

JDB有一个kill thread命令,开发人员可以在其中指定线程id和用于终止线程的exception

我找到了两个使用命令行jdb调试器的引用。 请参阅StackOverflow – 是否可以从同一JVM上运行的其他Java程序查看/暂停/终止特定线程? , 我如何在JDB中使用kill调用?

我在Eclipse Java调试器中找不到类似方法的任何信息。