【问题标题】:Eclipse: find lines in a block that can throw exceptionsEclipse:在可以抛出异常的块中查找行
【发布时间】:2013-03-20 08:57:02
【问题描述】:

我正在查看看起来像

的代码
try {
     // Lots of things here.
     // More than I'd like to individually hover over every time I see this
} 
catch (Exception e) {
     // doesn't matter
}

对于 try 块中的任何特定方法,我可以找到它抛出的已检查异常。有没有办法突出显示所有可能引发检查异常的行?

一般来说,我想我也许可以删除 catch 块,将方法签名更改为 throw Exception,此时,我可以看到方法中所有抛出异常的行(没关系:请参阅更新)。

在这种情况下,这甚至不会很好地工作,因为代码在 JSP 中。

注意:如果重要的话,我使用的是 MyEclipse 标准。

更新:标记出现已打开,但在这种情况下根本不做任何事情。我问这个问题是因为我认为有关上下文的某些东西导致了这种预期的行为,但它看起来像是一个奇怪的边缘情况或错误。

【问题讨论】:

  • 如果您删除 try/catch 块 Eclipse 会将所有已检查的异常突出显示为错误(您需要捕获它们,它不会编译)。据我所知,该功能取决于编译错误,但我必须深入研究源代码才能找到它。假设它 not 基于编译错误,您可以将其挂接到编辑器中。对于一个功能来说这是一个好主意,但是我处理它的方式是简单地检查方法并检查文档(我认为是悬停或 F1)。通常带有异常的方法是相当明显的。
  • 附带说明,如果其中的代码太多以至于您后悔想要悬停并查看引发异常的原因,您可能需要考虑重构并将一些内容提取到更多函数中。不过,对这个问题并没有真正的帮助。
  • 我倾向于同意,但我对这个项目还不够熟悉,无法有效地重构它。而且,知道在哪里抛出了哪些异常将有助于理解和/或重构代码,因此存在先有鸡还是先有蛋的问题。
  • 在我看来,你永远不应该直接看到Exception。由于 Java 7 使您能够使用 Multicatch,因此您可以以相同的方式处理所有选中的Exceptions。使用Exception,您还可以捕捉到我从未捕捉到的RuntimeExceptionRuntimeException 建议,你不能继续跑步)。如果RuntimeException 被抛出,你也不应该抛出RuntimeException。这可以防止丢失您应该处理的抛出的Exceptions,并可能导致严重的错误。
  • 为什么检查出现的技巧对您不起作用?你填错了吗? 也许没有抛出异常

标签: java eclipse jsp exception


【解决方案1】:

在 Eclipse 中,如果启用“突出显示事件”并选择 Exception,它将突出显示所有抛出被 catch 块捕获的(已检查)异常的行。

【讨论】:

  • 很不错的功能,虽然用了Eclipse很久了,但是不知道。谢谢。
【解决方案2】:

将光标放在 catch 子句中“异常”一词(或您捕获的任何类型的异常)的中间。 “异常”一词和所有引发此类异常的方法调用将自动标记为灰色背景突出显示。此功能在 Eclipse 中称为“标记事件”。

如果您在 Eclipse 安装中没有看到这种情况,请按一次 AltShiftO(O 类似 Occurances)来切换该功能并重复上述工作流程。或者使用工具栏按钮(list of toolbar buttons 中的第二个条目)。

【讨论】:

    【解决方案3】:

    您可以阅读该类的参考手册以了解特定方法可以抛出什么异常。请记住,java 有两种异常:选中和未选中。对于未经检查的异常,方法不必声明它可以抛出异常(例如 RuntimeException)

    我还建议您使用一些 IDE,例如 Eclipse,它会立即告诉您一行是否可以抛出异常并且您没有处理它 - 然后您可以使用 try-catch 包装它或让方法 throw只需单击鼠标即可。

    【讨论】:

    • 这真的好像你没有阅读我的问题。我正在使用 eclipse,我不想单独将鼠标悬停在每个方法上,因为我正在查看一个长块。我错过了你在说什么?
    猜你喜欢
    • 2013-10-02
    • 1970-01-01
    • 2019-08-20
    • 1970-01-01
    • 2011-08-22
    • 2013-10-28
    • 2010-10-03
    • 1970-01-01
    相关资源
    最近更新 更多