`

finally块的正确使用

阅读更多

当finall块中包含return语句时,Eclipse会给出警告“finally block does not complete normally”,原因分析如下:

1、不管try块、catch块中是否有return语句,finally块都会执行。


2、finally块中的return语句会覆盖前面的return语句(try块、catch块中的return语句),所以如果finally块中有return语句,Eclipse编译器会报警告“finally block does not complete normally”。

 

3、如果finally块中包含了return语句,即使前面的catch块重新抛出了异常,则调用该方法的语句也不会获得catch块重新抛出的异常,而是会得到finally块的返回值,并且不会捕获异常。

 

结论,应避免在finally块中包含return语句。如果你在前面的语句中包含了return语句或重新抛出了异常,又在finally块中包含了return语句,说明你概念混淆,没有理解finally块的意义。

分享到:
评论

相关推荐

    java 中finally语句块与return的执行关系

    Java 中 finally 语句块与 return 的执行关系 Java 中的 finally 语句块是用于保证无论出现什么情况,一定要执行的代码块。...我们需要了解 finally 语句块的作用和执行顺序,以便编写正确和高效的 Java 代码。

    使用try-catch-finally处理异常

    4. **finally块** `finally`块是可选的,无论`try`和`catch`块中的代码是否抛出异常,`finally`块里的代码都会被执行。这通常用于资源清理,如关闭文件流、网络连接等。即使在`try`或`catch`块中有return语句,`...

    finally结构的注意点(一)

    在实际开发中,理解并正确使用 `finally` 结构对于编写健壮和可维护的代码至关重要。在分析和调试问题时,也常常需要关注 `finally` 块的行为,以确保资源得到适当的管理,防止内存泄漏或资源耗尽。 总结一下,`...

    try-finally-throw-in-finally.rar_Called

    // 在finally块中抛出新异常 } ``` 在这个例子中,无论`try`块是否抛出异常,`finally`块中的代码都会被执行。但是,如果在`finally`块中使用`throw`语句,它会立即中止`finally`块的剩余部分,并将控制权交给最近...

    Java finally语句到底是在return之前还是之后执行?

    例如,如果你在`try`块中打开一个文件流,然后在`finally`块中关闭它,即使在读取文件过程中出现异常,文件流也会被正确关闭,防止资源泄露。 以下是一个简单的示例: ```java public int readFromFile() { ...

    try-finally-return-in-finally.rar_return

    3. `try-finally-return-in-finally.js` 直接对应我们的主题,即在`finally`块中使用`return`的情况。 在JavaScript中,当`try`块中的`return`语句执行时,控制流会立即跳到`finally`块,执行`finally`中的代码。...

    final, finally, finalize的区别

    在Java编程语言中,"final", "finally", 和 "finalize" 这三个关键字有着截然不同的含义和用途,它们各自在程序设计的不同层面扮演着重要...理解并正确使用这三个概念,对于开发高质量的 Java 应用程序具有重要意义。

    376.374.JAVA基础教程_异常处理-finally的使用(376).rar

    在这个例子中,无论`FileReader`的构造函数是否抛出`FileNotFoundException`,`finally`块中的代码都会被执行,确保文件流被正确关闭,避免资源泄露。 值得注意的是,Java 7引入了`try-with-resources`语句,它可以...

    Java软件开发实战 Java基础与案例开发详解 10-5 finally关键字 共7页.pdf

    System.out.println("这是finally块,无论是否有异常,都会被执行"); } System.out.println("程序继续执行..."); } } ``` 在这个例子中: - `try`块尝试执行一个会导致除零异常的操作。 - `catch`块捕获并处理...

    finally分析

    这些指令确保即使遇到异常或正常退出,也能正确地执行`__finally`块中的代码。 #### 四、示例解析 假设有一个简单的示例,其中使用了终止处理程序来避免内存泄漏: ```cpp char *p = NULL; __try { p = new char...

    Java 实例 - Finally的用法源代码-详细教程.zip

    上述代码展示了如何使用`finally`来确保文件在使用后被正确关闭,即使在打开文件时出现异常。 4. 使用`finally`进行资源管理: 自Java 7开始,引入了`try-with-resources`语句,它简化了资源的管理和关闭。在这种...

    讲解Java编程中finally语句的基本使用方法

    在Java编程中,`finally`语句块是一个非常重要的概念,它...理解并正确使用`finally`语句对于编写健壮、可维护的Java应用程序至关重要。在编写涉及异常处理的代码时,应养成使用`finally`块进行资源管理的良好习惯。

    在静态编译器中实现Java异常机制的算法.pdf

    Java 异常处理逻辑可以分为六种情况:try 块不抛出异常且不包含 finally 块、try 块不抛出异常且包含 finally 块、try 块抛出异常且 catch 块不处理异常且不包含 finally 块、try 块抛出异常且 catch 块不处理异常且...

    java try…catch…finally捕获异常的实例

    在Java编程语言中,异常处理是一项关键特性,用于在程序执行过程中处理可能出现的错误或异常情况。`try-catch-finally`结构是Java提供的一种优雅的处理异常...通过正确使用这些结构,可以提高代码的可读性和可维护性。

    Java高级工程师岗位笔试题目.docx

    如果try块中没有抛出异常,则catch块和finally块都不会执行 C. finally块无论是否发生异常都会执行 D. catch块和finally块至少需要一个 4. 下列哪项是Java中的集合框架(Collections Framework)的一部分,用于...

    Java中Finally关键字

    引入`finally`后,我们可以将资源关闭的代码放入`finally`块,这样无论是否发生异常,`finally`块中的代码都会被执行,从而确保套接字被正确关闭,避免资源泄露。这样简化后的代码更清晰、更健壮。 `finally`的执行...

    Python自学教程-18-异常的finally.ev4.rar

    在这个例子中,即使在读取文件时发生了错误,`finally`块中的代码也会确保文件被正确关闭,这是避免资源泄漏的好习惯。 `try/except/finally`结构的组合使得我们能够更精细地控制程序在遇到错误时的行为,提高了...

    C++ 中try finally关键字详解

    std::cout << "__finally块中" ; } std::cout ; } ``` 在这个例子中,尽管 `doSomething()` 函数抛出了异常,`finally` 块的代码仍然会被执行。输出将是: ``` hello __try块中 __finally块中 ``` 注意,`...

    浅谈Java中return和finally的问题

    在Java编程语言中,`return` 语句和 `finally` 语句的相互作用是一个重要的概念,尤其是在处理异常处理时。...正确使用 `try-catch-finally` 结构可以确保程序的稳定性,并避免因为未释放资源而导致的问题。

Global site tag (gtag.js) - Google Analytics