当前位置: 首页 > 面试题库 >

如何忽略Java中的异常

徐峰
2023-03-14
问题内容

我有以下代码:

TestClass test=new TestClass();
test.setSomething1(0);  //could, but probably won't throw Exception
test.setSomething2(0);  //could, but probably won't throw Exception

我想执行:test.setSomething2(0);即使test.setSomething(0)(上面的行)抛出异常。除了:

try{
   test.setSomething1(0);
}catch(Exception e){
   //ignore
}
try{
   test.setSomething2(0);
}catch(Exception e){
   //ignore
}

我连续有很多test.setSomething,它们都可能引发异常。如果他们这样做,我只想跳过这一行,移至下一行。

为了澄清起见,我不在乎它是否引发异常,并且我无法编辑引发此异常的代码的源代码。

这是我不关心例外的情况(请不要使用通用量化的语句,例如“您永远不要忽略异常”)。我正在设置某些对象的值。当我向用户提供值时,无论如何我都会执行null检查,因此,是否执行任何代码行实际上都没有关系。


问题答案:

我会严重怀疑任何忽略测试代码引发的异常的测试代码的合理性。也就是说,假设您知道自己在做什么……就无法从根本上忽略引发的异常。您能做的最好的事情就是最小化包装异常抛出代码所需的样板。

如果您使用的是Java 8,则可以使用以下代码:

public static void ignoringExc(RunnableExc r) {
  try { r.run(); } catch (Exception e) { }
}

@FunctionalInterface public interface RunnableExc { void run() throws Exception; }

然后,这意味着静态导入,您的代码将变为

ignoringExc(() -> test.setSomething1(0));
ignoringExc(() -> test.setSomething2(0));


 类似资料:
  • 问题内容: 当你只想执行但不处理异常时,如何在Python中进行呢? 以下是正确的方法吗? 问题答案: 要么 所不同的是,第一个也将赶上KeyboardInterrupt,SystemExit和类似的东西,这是直接来源于,没有

  • 我正在用Python编写一个自定义备份脚本。有时mkdir函数或print函数或任何函数由于各种原因而失败。这样的异常会使整个脚本停止,并在中途停止备份,这是非常令人沮丧的。到目前为止,我已经通过添加try:...except:...语句并正确管理这些异常来管理这些问题。但是,有一天,某个其他语句或函数也可能因为尚未触发的其他原因而引发异常。 有没有一种方法告诉脚本继续进行?是否相当于在try:.

  • 我有一个使用JSoup连接和解析网站数据的程序。当网站在我给出的10秒超时后无法连接时,JSoup方法会抛出一个Uncheck edIOException。这可能包含一个IOException,例如“SSL Peer意外关闭”或“超时”,这是我过去处理过的IOExceptions。这很奇怪,因为它包含一个try catch: 我已经做了各种变通方法,比如在try-catch中包装该方法,使该方法抛

  • 问题内容: 我的代码中有一个try … except块,当抛出异常时。我真的只想继续编写代码,因为在这种情况下,所有内容仍然可以正常运行。问题是,如果您将except:块保留为空或不执行任何操作,则会出现语法错误。我不能使用continue,因为它不在循环中。我可以使用一个关键字来告诉代码继续运行吗? 问题答案: except Exception: pass 适用于pass语句的Python文档

  • 我尝试了在这里和其他地方找到的多个例子,但它总是无法满足我的需要。 我的R脚本只是一个配置验证脚本,它会检查以确保用户的环境设置正确。因此,我想尝试5个不同的步骤,并报告每个步骤的状态,以便用户可以立即修复所有问题。例如,我的第一步测试与数据库的连接,如果失败,我想打印一条消息并继续执行步骤2。但它总是在出错时停止执行,所以我只会遇到失败,然后就再也没有了。 我正在使用RScript从命令行运行脚

  • 我必须实现一个错误处理程序,它在发送SOAP请求并处理其响应的业务流程上使用Camel重新交付策略。在process部分期间,可以抛出一个特殊的异常(RetryException)。这个异常是在错误处理程序级别捕获的(多亏了onException(RetryException.Class))。这是最简单的部分。 现在,我想忽略cxfendpoint可能抛出的异常(在每个示例出现连接错误的情况下),