`
windforce
  • 浏览: 80308 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Finally 块未正常完成

 
阅读更多
一个try块可以不执行finally子句就能够退出的唯一方法是通过调用System.exit()方法来实现的。

如果控制因为一个return,continue或break语句离开这个try块,那么finally快会在控制转移到它的新的目标代码之前执行.

也就是说如果在finally块中使用return,continue或break。逻辑可能就不是你本身要表达的意思了。
package test;

public class TryTest {
    public static void main(String[] args) {
        try {
            System.out.println(TryTest.test());// 返回结果为true其没有任何异常
        } catch (Exception e) {
            System.out.println("Exception from main");
            e.printStackTrace();
        }
    }

    public static boolean test() throws Exception {
        try {
            throw new Exception("Something error");// 1.抛出异常
        } catch (Exception e) {// 2.捕获的异常匹配(声明类或其父类),进入控制块
            System.out.println("Exception from e");// 3.打印
            return false;// 4. return前控制转移到finally块,执行完后再返回
        } finally {
            return true; // 5. 控制转移,直接返回,吃掉了异常
        }
    }
}


风之力 2007-07-27 20:04 发表评论
分享到:
评论

相关推荐

    socket通信 未完成

    3. **加入异常处理**:在关键代码块添加try-catch-finally结构,确保异常发生时能给出反馈并关闭资源。 4. **考虑并发处理**:如果需要处理多个客户端,使用线程池管理并发连接。 5. **测试与调试**:编写测试用例,...

    Java异常处理细节分析

    - 如果`finally`块执行顺利,则整个程序块正常完成。 - 如果`finally`块由于某种原因突然中止,则程序块的结束状态为“突然中止”。 - **Try块出现异常**: - **异常被捕获**: - 如果`catch`块执行正常,则...

    完全解析Java编程中finally语句的执行原理

    这是因为`finally`块的代码会被插入到控制流的最后,只有在所有其他代码都完成执行后才会执行。 为了确保`finally`块始终执行,通常我们会避免在`try`或`catch`块中使用可能导致程序提前终止的操作,如`System.exit...

    try-chatch你不知道的事

    #### finally块执行的条件 大多数人认为`finally`块是无论如何都会执行的,但事实并非如此绝对。`finally`块的执行受到多种因素的影响,包括但不限于正常程序流程、异常抛出以及系统级别的干预。 ##### 正常执行...

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

    总的来说,`finally`在Java异常处理中扮演着至关重要的角色,它确保了关键的清理工作得以完成,提高了代码的健壮性和可靠性。通过合理使用`try`、`catch`和`finally`,开发者可以编写出更稳定、更易于维护的Java程序...

    finally 一定会执行(实例代码)

    在Java编程语言中,`finally`块是一个非常重要的概念,它与`try`和`catch`块一起用于处理异常情况。`finally`块确保无论是否发生异常,其中的代码都会被执行。下面我们将深入探讨`finally`块的工作原理,并通过提供...

    使用c# 异常的性能注意事项

    这使得finally块成为释放资源(如关闭文件、网络连接或数据库连接)的理想位置,因为这些操作应该在任何情况下都完成。 ### 异常处理的性能注意事项 虽然异常处理是处理程序错误的重要机制,但在设计和实现时必须...

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

    在异常处理中,`finally`的主要作用是确保必要的清理工作得以完成,如关闭文件流、网络连接或其他资源。在没有`finally`的情况下,如上面提到的`WithoutFinally`类的例子所示,需要在每个`catch`块和主代码块的末尾...

    多线程下载器未完成版本

    开发者可能使用try-catch-finally结构来捕获并处理可能出现的IOException或其他异常,确保即使在部分线程出错时,整个程序仍能正常运行。 **资源管理:** 在下载完成后,关闭打开的网络连接和文件流是非常重要的。...

    基于JAVA常见异常处理研究.pdf

    在程序中,不管 try 块以何种方式退出,最终都要流入 finally 块,执行 finally 块的代码。 三、 异常处理的原则 在 JAVA 中,异常处理可以分为三种处理模式:声明异常、抛出异常和捕捉异常。创建和抛出异常是在...

    异常处理机制

    最后,不要忽视finally块,确保释放资源和完成必要的清理工作。 此外,有些工具如IDEs(集成开发环境)和静态分析工具可以帮助开发者检测潜在的异常处理问题,如未捕获的异常或者不适当的异常处理。例如,通过阅读...

    FileExceptionTest_VC++源码_

    无论异常是否发生,finally块内的代码都会执行,这对于资源管理(如文件或网络连接的关闭)特别有用。 5. **SEH(结构化异常处理)与C++异常** - 在VC++中,还有一种称为结构化异常处理(SEH)的原生Windows异常...

    C#062异常处理

    // 不管是否发生异常,finally块里的代码总会被执行 } ``` 在这个结构中,`catch`块可以有多个,每个块捕获不同类型的异常。如果`try`块中的代码抛出了一个匹配的异常类型,相应的`catch`块就会执行。如果所有的`...

    222019321062060_付若轩6

    当程序进入try块后,无论程序是通过异常结束还是通过return语句正常退出,finally块的内容都会被执行。它的主要作用是在程序执行过程中释放资源,确保必要的清理工作得以完成。 2. **throw 和 throws 的区别** - `...

    Modern.C#系列课程(5)

    1. 异常概述:异常是在程序执行过程中遇到的不正常情况,如除以零、文件未找到或空引用等。C#中的异常是基于.NET Framework的类库,它们通常继承自System.Exception类。 2. try-catch语句:这是C#中处理异常的基本...

    scjp培训第七章java异常.doc

    3. **finally** 块:无论是否发生异常,finally块中的代码总会被执行。它通常用于释放资源或执行清理操作,确保这些任务总是在程序退出前完成。 4. **throw** 关键字:用来显式抛出一个异常。当程序检测到一个无法...

    222019321062074_冯春霖_Lab51

    当程序执行到try块时,不论程序是通过正常流程结束,还是由于异常而中断,finally块中的语句都会被执行。这是保证清理工作如资源释放等得以执行的重要机制。 2. **throw 和 throws 关键字的区别**: - `throw` 是...

    8. 异常处理1.rar

    finally块是可选的,无论是否发生异常,它的代码都会被执行。通常在这里,我们会放置清理资源或关闭连接等操作,确保这些操作无论异常与否都能完成。 在J2ME中,由于内存和性能限制,异常处理需要特别谨慎。避免...

    (完整版)Java程序设计任务驱动式教程-任务十三-防患于未然(捕获并处理异常).ppt

    3. **finally** 块:无论是否发生异常,finally块中的代码总是会被执行。通常用来放置释放资源或完成必要清理操作的代码。 4. **throw** 关键字:程序员可以显式地抛出一个异常,例如`throw new Exception("Error ...

    试析Java语言异常处理技术.zip

    Java通过一套强大的异常处理机制来实现这一目标,包括异常类、捕获和抛出异常、finally块以及try-catch-finally结构等关键概念。以下是对这些知识点的详细阐述: 1. 异常类:在Java中,异常是一种对象,它是类的...

Global site tag (gtag.js) - Google Analytics