在try-catch,Java中注释代码

时间:2011-07-05 10:19:17

标签: java debugging comments try-catch

我的项目中有这样的代码:

try {
    downloadFile();
    unzipFile();
} catch (IOException e) {
    System.out.println("Can't download file!");
    e.printStackTrace();
}

方法downloadFile()转发异常IOException,方法unzipFile()根本不会抛出任何异常。

现在我正在尝试调试此代码,我的方法downloadFile()工作正常,所以我想发表评论并查看方法unzipFile()的工作原理。我们假设文件大小为100 Mb:)

当我使用“downloadFile()”评论时,我收到此错误:

  

IOException的无法访问的块。永远不会从try语句主体

抛出此异常

为了调试我的代码,我正在插入像

这样的行
if (true) return;

在方法downloadFile()中,然后将其删除。

我确信我做错了。
能否请您举一个Java大师在这种情况下如何做的例子。 谢谢。

6 个答案:

答案 0 :(得分:3)

正如Rob在评论中提到的,测试测试特定的事物/方法/行为。如果你想测试unzipFile,那么为unzipFile编写一个可重现的测试用例,不要弄乱任何可能有其自身问题的其他东西(即downloadFile)。然后,使用已知的输入和输出数据测试unzipFile

换句话说,如果你想测试unzipFile测试那个,而不测试其他所有内容。

除此之外,现在一个简单的解决方案就是这个,我想:

try {
    downloadFile();
} catch (IOException e) {
    System.out.println("Can't download file!");
    e.printStackTrace();
}
unzipFile();

因此您可以轻松注释掉整个try / catch块

答案 1 :(得分:2)

如果您注释掉downloadFile();,您还应该注释掉try-catch块,因为它不再捕获任何内容。

答案 2 :(得分:1)

如果您确定该方法(unzipFile())不会抛出任何异常,为什么要使用try / catch。

答案 3 :(得分:0)

错误本身表示IOException的所有 “无法访问的块。此异常永远不会从try语句主体 中抛出。

正如您所说,unzipFile()方法不会抛出任何异常,为什么要用try..catch包装它?只需删除或评论try..catch()即可运行/调试它。这只是代码中的unzipFile()而已。如果unzipFile()取决于downloadFile(),则可能会导致错误。

答案 4 :(得分:0)

你不应该评论downloadFile()。该消息告诉你实情:try块中没有代码抛出该异常。

我通常使用带有调试器的IDE来处理这类事情。您可以使用Eclipse或NetBeans;我更喜欢Jet Brains的IntelliJ。

答案 5 :(得分:0)

如果您有合适的工具,通常不需要发表任何评论。例如。你在unzipFile中犯了一个错误你的IDE更喜欢eclipse会向你展示一个堆栈跟踪。如果单击堆栈跟踪中的位置,则会自动获取文件,标记该行时发生错误。

如果可以重现此错误,可以在此行之前设置断点以检查变量和类属性。如果您确定导致问题的块,则可以在此块之前设置断点,依此类推。