异常-举例6:finally

Posted zuixinxian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异常-举例6:finally相关的知识,希望对你有一定的参考价值。

finally 的特点
    被 finally 控制的语句体一定会执行
    特殊情况:在执行到 finally 之前 jvm 退出了(比如 System.exit(0))
finally 的作用
    用于释放资源,在 IO 流操作和数据库操作中会见到

final,finally 和 finalize 的区别:
final:最终的意思,可以修饰类,成员变量,成员方法
    修饰类,类不能被继承
    修饰变量,变量是常量
    修饰方法,方法不能被重写
finally:是异常处理的一部分,用于释放资源。
    一般来说,代码肯定会执行,特殊情况:在执行到 finally 之前 jvm 退出了
finalize:是 Object 类的一个方法,用于垃圾回收

如果 catch 里面有return 语句,请问 finally 的代码还会执行吗?如果会,请问是在 return
前还是 return 后?会执行。前。准确的说,应该是在中间。

try...catch...finally 的格式变形
    A:try...catch...finally 
    B:try...catch 
    C:try...catch...catch...
    D:try...catch...catch...finally 
    E:try...finally 这种做法的目前是为了释放资源。
package com.test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author shusheng
 * @description
 * @Email [email protected]
 * @date 2018/10/10 16:10
 */
public class FinallyDemo {
    /**
     *finally:被 finally 控制的语句体一定会执行
     *注意:如果在执行到 finally 之前 jvm 退出了,就不能执行了。
     *
     *A:格式
     *try...catch...finally...
     *B:用于释放资源,在 IO 流操作和数据库操作中会见到
     */
    public static void main(String[] args) {

        String s = "2014-11-20";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        Date d = null;
        try {
            d = sdf.parse(s);
        } catch (ParseException e) {
            e.printStackTrace();
            //System.exit(0);    如果有这条语句就不执行 finally 语句
        } finally {
            System.out.println("这里的代码是可以执行的");
        }
        System.out.println(d);
    }

}

 

以上是关于异常-举例6:finally的主要内容,如果未能解决你的问题,请参考以下文章

Java学习 -- 异常

Java学习 -- 异常

finally{} 代码块

Python.异常处理

Java 异常

尚硅谷_Java零基础教程(异常处理)-- 学习笔记