【问题标题】:Stop ArrayOutOfBoundsException from halting program execution in Java停止 ArrayOutOfBoundsException 在 Java 中停止程序执行
【发布时间】:2011-01-24 12:47:57
【问题描述】:

我目前正在开发一个自动化的 "test" 类(对同一个包中的其他类运行几个单独的测试)。测试文件的目的是显示每个测试是通过还是失败。某些正在测试的文件未正确写入,在运行测试时会创建 ArrayOutOfBoundsException,这会导致我的测试文件崩溃并且直到最后执行其他测试才会继续。我无法修改代码以修复正在测试的项目中的错误。

-> 如何在 Java 中停止异常以停止程序执行而不创建任何新类

感谢您的所有帮助、建议和分享。

【问题讨论】:

  • 可以修改测试中的代码吗?
  • 我无法评估其他人的工作。感谢您的关注。

标签: java arrays exception-handling automated-tests try-catch


【解决方案1】:

阻止它发生的最佳方法:修复代码以执行适当的检查。

如果您无法修复实际失败的代码,您可以在“外部”级别显式捕获异常,记录警告并继续下一个文件:

try
{
    operationWhichMightThrow();
}
catch (ArrayIndexOutOfBoundsException e)
{
    log.warning("Failed file " + filename, e);
    // Do whatever you need to continue to the next file.
}

【讨论】:

  • 好的,非常感谢乔恩,我将使用 if-catch,因为不允许修改给出的代码,因为我正在“评估”其他人的工作。一切顺利。
  • @Jon Skeet,实际上在尝试弄清楚如何使用 try-catch 块之后,在这种情况下不会很好地锻炼。我不想创建任何额外的类,是否可以在同一类“testfile”中捕获方法?
  • @Scobal 是的,我可以使用“testfile”类做任何我想做的事情,因为我是开发它的人。不能做的是修改正在测试的项目的方法和类
  • @venezuelan_pimp:不太清楚你在问什么,但我怀疑是这样。但是如果异常确实发生在你的类中,那么你可以通过确保使用适当的数组索引来避免它。
  • @Jon Skeet:很抱歉在提出我的问题时不清楚,我有时很难用英语写下我的想法。关于异常,它不是发生在同一个类中,而是发生在同一个包中的另一个类中。我不允许修改/修复在正在测试的类(其他)中引发异常的代码。您的解决方案非常好,我只是通过捕获“ArrayIndexOutOfBoundsException”而不是“ArrayOutOfBoundsException”来塑造它,这样我就不必在包中为它创建一个额外的类。感谢您的所有帮助,乔恩,您真的很友善。
【解决方案2】:

捕获异常并将其记录为测试失败。

【讨论】:

    最近更新 更多