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

我们可以在最终阻止中使用“返回”吗?

桑成荫
2023-03-14
问题内容

我们可以在 finally 块中使用return语句吗?这会引起任何问题吗?


问题答案:

finally块内部返回会导致exceptions丢失。

finally块中的return语句将导致任何在try或catch块中引发的异常都将被丢弃。

根据
Java语言规范:

如果由于任何其他原因R导致try块的执行突然完成,则执行finally块,然后可以选择:

   If the finally block completes normally, then the try statement
   completes  abruptly for reason R.

   If the finally block completes abruptly for reason S, then the try
   statement  completes abruptly for reason S (and reason R is
   discarded).

注意:根据 JLS
14.17
,return语句总是突然完成。



 类似资料:
  • 问题内容: 下面是有趣的代码: 可以请人解释一下,什么结果将返回这两个函数并解释原因,即描述执行的顺序 问题答案: 从Python文档 无论是否发生异常,finally子句始终在离开try语句之前执行。如果try子句中发生了异常且未由except子句处理(或在except或else子句中发生),则在执行finally子句后重新引发该异常。 当try语句的任何其他子句通过break,continue

  • 问题内容: 我知道Python提供了API,因此您可以在C代码中调用Python解释器,但是我想要的却是相反的。 我的程序需要使用一些C API,所以代码必须用C编写。但是我也想用Python打包程序。这意味着我想在Python中调用这些C函数或可执行文件。那可能吗? 如果我希望C代码成为一个库,这意味着我将它与Python 中的可能的链接一起使用,该怎么做?那可能吗?如果我将C代码写入可执行文件

  • 本文向大家介绍我们可以在MySQL中使用ORDER BY NULL吗?,包括了我们可以在MySQL中使用ORDER BY NULL吗?的使用技巧和注意事项,需要的朋友参考一下 是的,我们可以做到 注–在MySQL 5.7之前,ORDER BY NULL很有用,但在MySQL 8.0中,例如,最后不需要指定ORDER BY NULL以抑制隐式排序。 让我们首先创建一个表- 使用插入命令在表中插入一些

  • 我已经实现了一个基于lucene的软件来索引超过1000万的人名,这些人名可以用不同的方式书写,比如“Luíz”和“Luis”。索引是使用各个标记的语音值创建的(创建了一个自定义分析器)。 目前,我正在使用QueryParser查询一个给定的名称,结果很好。但是,在《Lucene in Action》一书中提到,SpanarQuery可以使用标记的接近性来改进我的查询。我对名称的非拼音索引使用了S

  • 我有几个单独的规则。例如,现在我有3套不同的规则要执行。根据输入参数,在任何时候都要执行一组规则。假设第一组有5条规则,第二组有7条规则,第三组有5条规则。现在,所有这些集合可能都有公共规则,我想引用它们,而不是在每个集合中编写3次规则。如何在流口水时做到这一点?明天,如果我进行了更新,我应该只能对规则进行一次更改,并且此更改应反映在所有集合中。请就此提出建议。。。。。 谢谢

  • 问题内容: 考虑到此代码,我是否可以 绝对确定 该块始终执行,无论它是什么? 问题答案: 是的,将在执行或代码块后调用。 唯一不会被调用的时间是: 如果您调用 如果您调用 如果JVM首先崩溃 如果JVM在或块中达到了无限循环(或其他不间断,不终止的语句) 操作系统是否强行终止了JVM进程;例如,在UNIX上 如果主机系统死机;例如,电源故障,硬件错误,操作系统崩溃等 如果该块将由守护程序线程执行并