`

Java的finally语句不会被执行的唯一情况

    博客分类:
  • Java
阅读更多

Java的finally语句不会被执行的唯一情况是:先执行了用于终止程序的System.exit()方法。如下面的代码:

 

public class Test
{
       public static void main(String[] args)
       {
              try
              {
                     System.out.println("Start");
                     System.exit(0);

              }finally
              {
                      System.out.println("Finally");
              }

              System.out.println("End");
       }
}

 

 

输出结果为:Start

 

当然,如果在执行一般的没有System.exit()语句的try语句时,突然断电了,这时所有进程都会终止,也不会执行finally语句。

3
1
分享到:
评论
2 楼 lh870003574 2012-06-26  
在不终止VM的情况下,finally中的代码一定会执行。

1 楼 lh870003574 2012-06-26  
呵呵,这应该不是唯一情况吧~~~
考虑多线程,当线程是后台模式时就有可能不执行finally~~

相关推荐

    Java中Finally关键字

    `finally`的执行规则是,只要`try`或`catch`块被执行,`finally`块就会在它们之后运行,即使在`try`或`catch`中有`return`语句或者抛出未捕获的异常,`finally`块依然会被执行。唯一能阻止`finally`执行的情况是程序...

    java面试题 谈谈final, finally, finalize的区别

    `finally` 用于定义一组必须在任何情况下(无论是否发生异常)都会执行的代码块。它常与 `try-catch` 结构一起使用,确保资源的释放和必要的清理工作。 ```java try { // 可能抛出异常的代码 } catch ...

    Java应用程序-习题-第7章.doc

    在本章节中,我们将详细介绍 Java 中的异常处理机制,包括异常的分类、try-catch 语句、throws 语句、finally 语句、自定义异常类等。 一、异常的分类 在 Java 中,异常可以分为两大类:Error 和 Exception。Error...

    Java异常处理细节分析

    #### 二、Try-Catch-Finally语句详解 ##### 2.1 Try-Catch-Finally执行流程 `try-catch-finally`结构是Java中异常处理的核心语法。其执行流程大致如下: 1. **Try块**:程序首先执行`try`块内的代码,这里是程序...

    java基础知识学习教程-8异常处理.pptx

    这个案例展示了如何使用 try-catch 语句来处理异常,并且使用 finally 语句来确保某些代码块总会被执行。 Java 异常处理机制可以帮助我们写出更加健壮、可靠的代码,提高程序的安全性和使用体验性。

    最全Java异常处理超详解(建议收藏).pdf

    3. finally:finally 语句块总是会被执行,它主要用于回收在 try 块里打开的物力资源(如数据库连接、网络连接和磁盘文件)。 4. throw:throw 用于抛出异常。 5. throws:throws 用在方法签名中,用于声明该方法...

    大学课程讲义-Java基础-异常处理.pptx

    Java 程序的执行过程中,如出现异常,会自动生成一个异常类对象,该异常对象将被提交给 Java 运行时系统,这个过程称为抛出(throw)异常。抛出异常后,Java 运行时系统将根据异常类型和处理方法来决定如何处理该...

    Java学习笔记

    其中的代码语句论有没有异常都会被执行(因为finally子句的这个特性,所以一般将释放资源,关闭连接的语句写在里面)。 finally中的代码和try-catch中的代码冲突时,finally中的代码一定会被执行且会忽略try-catch中...

    Java 异常1

    finally语句块是异常处理的关键组成部分,无论try块是否抛出异常,finally块中的代码都会被执行,以确保清理资源。例如,关闭数据库连接、文件流等操作。值得注意的是,finally块的执行优先于return语句,即使return...

    最新Java面试题

    - **Java异常处理`try-catch-finally`的执行过程**:首先尝试执行`try`块中的代码,如果发生异常,则捕获并处理该异常;无论是否有异常,`finally`块中的代码都会被执行。 - **异常处理中`throws`和`throw`的区别**...

    Java异常处理之try...catch...finally详解

    1. 处理过程:代码在执行的时候,进入try块,若是在try块中出现了异常,系统会自动生成一个一场对象,该对象被提交给java运行时环境,这就是异常的抛出;在java运行时环境收到异常对象时则把该对象交给catch块处理,...

    Java第6章完整.pptx

    try语句中包含可能发生异常的语句,catch语句用来捕获异常,finally语句用来执行异常处理结束前的执行语句。throws语句用来声明方法可能抛出的异常。 7. 异常的捕获顺序 当使用catch语句捕获异常时,需要遵循以下...

    Java异常处理中的一些特殊情况举例

    本文将深入探讨两种特殊情况下Java异常处理的使用:只使用`try`和`finally`而不使用`catch`,以及`finally`语句不被执行的情况。 首先,我们来看只使用`try`和`finally`不使用`catch`的情况。这种结构在Java并发...

    Java虚拟机规范(Java_SE_7).pdf

    7. **异常处理**:JVM支持异常处理框架,通过try-catch-finally语句块来捕获和处理异常,提供了一种统一的错误处理机制。 8. **多线程**:Java虚拟机支持多线程并发执行,线程的创建、同步和调度都在JVM层面上进行...

    java九阴真经.doc

    Java通过try-catch-finally语句块来捕获和处理运行时错误。异常类层次结构使得我们可以精确地处理不同类型的错误,并且finally块确保了即使在异常情况下也能执行必要的清理操作。 在Java中,集合框架是存储和管理...

    Java面试大合集

    Nested Class(一般是C++的说法),Inner Class(一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。静态内部类(Inner Class)意味着: 1. 创建一个static内部类的对象,不需要...

    JAVA面试变态32问(精华版)

    * Nested Class(一般是C++的说法),Inner Class(一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。 * 静态内部类(Inner Class)意味着:1创建一个静态内部类的对象,不需要一...

    Java面试总结

    在try语句块中,如果存在return语句,finally语句块总是会被执行。 Java的接口和C++的虚类都是用来实现多态的机制,但Java接口是一种类型,可以多继承,而C++的虚类是类的概念,单继承。 Java中的异常处理是通过...

Global site tag (gtag.js) - Google Analytics