1 package com.bytezero.throwable;
2
3 import java.io.File;
4 import java.io.FileInputStream;
5 import java.io.FileNotFoundException;
6 import java.io.IOException;
7
8 import org.junit.Test;
9
10 /**
11 *
12 * @Description try-catch- finally中finally的使用:
13 * @author Bytezero·zhenglei! Email:420498246@qq.com
14 * @version
15 * @date 上午9:25:36
16 * @ 1.finally是可选的
17 * 2.finally中声明的是一定会被执行的代码,即使catch中又出现异常了,try中
18 * 有return语句,catch中有return语句等情况。
19 * 3.像数据库连接,输入输出流,网络编程Socket等资源,JVM是不能自动回收的,
20 * 我们需要自己手动的进行资源的释放,此时的资源释放,就需要声明在finally中。
21 *
22 *
23 *
24 */
25 public class FinallyTest {
26
27 @Test
28 public void test2() {
29 FileInputStream fis = null;
30 try {
31 File file = new File("hello.txt");
32 fis = new FileInputStream(file);
33
34 int data = fis.read();
35 while(data != -1) {
36 System.out.print((char)data);
37 data = fis.read();
38
39 }
40
41 } catch (FileNotFoundException e) {
42 // TODO Auto-generated catch block
43 e.printStackTrace();
44 } catch (IOException e) {
45 // TODO Auto-generated catch block
46 e.printStackTrace();
47 }finally {
48
49 try {
50 if(fis != null)
51 fis.close();
52 } catch (IOException e) {
53 // TODO Auto-generated catch block
54 e.printStackTrace();
55 }
56 }
57 }
58
59
60 @Test
61 public void testMethod(){
62 int num = method();
63 System.out.println(num);
64
65
66 }
67 public int method() {
68
69 try {
70
71 int[] arr = new int[10];
72 //System.out.println(arr[10]);
73 return 1;
74 }catch(ArrayIndexOutOfBoundsException e) {
75 e.printStackTrace();
76 return 2;
77 }finally {
78 System.out.println("我一定会被执行");
79 //return 3;
80 }
81
82 }
83
84
85
86 @Test
87 public void test1() {
88
89 try {
90 int a = 10;
91 int b = 0;
92 System.out.println(a / b);
93
94
95 }catch(ArithmeticException e) {
96 //e.printStackTrace();
97
98 int[] arr = new int[10];
99 System.out.println(arr[10]);
100
101 }catch(Exception e) {
102 e.printStackTrace();
103 }
104 //System.out.println("我 好帅啊~~");
105
106 finally {
107
108 System.out.println("我 好帅啊~~");
109 }
110
111
112 }
113
114 }

Java 异常处理(1) : try-catch- finally中finally的使用的更多相关文章

  1. Java异常处理机制 —— 深入理解与开发应用

    本文为原创博文,严禁转载,侵权必究! Java异常处理机制在日常开发中应用频繁,其最主要的不外乎几个关键字:try.catch.finally.throw.throws,以及各种各样的Exceptio ...

  2. Java 异常处理 try catch finally throws throw 的使用和解读(一)

    //最近的一个内部表决系统开发过程中,//发现对异常处理还存在一些模棱两可的地方,//所以想着整理一下//主要涉及到://1.try catch finally throws throw 的使用和解读 ...

  3. java异常处理之throw, throws,try和catch

    转自 http://blog.csdn.net/zhouyong80/article/details/1907799  程序运行过程中可能会出现异常情况,比如被0除.对负数计算平方根等,还有可能会出现 ...

  4. “崩溃了?不可能,我全 Catch 住了” | Java 异常处理

    前言 今天我们来讨论一下,程序中的错误处理. 在任何一个稳定的程序中,都会有大量的代码在处理错误,有一些业务错误,我们可以通过主动检查判断来规避,可对于一些不能主动判断的错误,例如 RuntimeEx ...

  5. java异常处理try catch finally

    1       异常 1.1      异常处理的作用 在编程时,如果出现文件打开失败,读写文件就会异常退出.如果出现内存溢出错误,程序也会异常退出.如果不能对这些异常进行处理.程序则无法正常运行.所 ...

  6. 项目中java异常处理

    一.java异常类介绍. Throwable: 有两个重要的子类:Exception(异常)和 Error(错误),二者都是 Java 异常处理的重要子类,各自都包含大量子类. 有一篇比较好的blog ...

  7. java 异常处理try+catch

    在整个异常处理机制中,异常在系统中进行传递,传递到程序员认为合适的位置,就捕获到该异常,然后进行逻辑处理,使得项目不会因为出现异常而崩溃.为了捕获异常并对异常进行处理,使用的捕获异常以及处理的语法格式 ...

  8. java异常处理:finally中不要return

    java异常处理:finally中不要return 复制代码 public class Ex1 { public static void main(String[] args) { System.ou ...

  9. Java异常处理场景中不同位置的返回值详细解析

    Java 异常处理中的返回值在不同位置不同场景下是有一些差别的,这里需要格外注意 具体分以下两种场景: 1 finally语句块没有return语句,即当代码执行到try或者catch语句块中的ret ...

  10. Java异常处理中finally中的return会覆盖catch语句中的return语句

    Java异常处理中finally中的return会覆盖catch语句中的return语句和throw语句,所以Java不建议在finally中使用return语句 此外 finally中的throw语 ...

随机推荐

  1. 简述if if和if else的关系与区别

    简述if if和if else的关系与区别 当满足条件1,条件2都会执行的哈. 双if是每一个if都会进行判断,依次对if进行判断,互相之间不会影响; if(条件1){ 要执行的语句; } if(条件 ...

  2. 【Java 进阶】详细探究 Spring 框架中的注解与反射

    [进阶]Spring中的注解与反射 目录 [进阶]Spring中的注解与反射 前言 一.内置(常用)注解 1.1@Overrode 1.2@RequestMapping 1.3@RequestBody ...

  3. NFS实现部署Linux文件共享

    NFS 即网络文件系统,是一种使用于分布式文件系统的协议,由Sun公司开发,于1984年向外公布,功能是通过网络让不同的机器,不同的操作系统能够彼此分享各自的数据,让应用程序在客户端通过网络访问位于服 ...

  4. PBKDF2算法:保护密码安全的重要工具

    摘要:在当今的数字世界中,密码安全是至关重要的.为了保护用户密码免受未经授权的访问和破解,Password-Based Key Derivation Function 2 (PBKDF2)算法成为了一 ...

  5. blazor maui hybrid app显示本地图片

    啊... ... 一通操作下来感觉就是两个字 折磨 跨平台有跨平台的好处 但框架本身支持的有限 很多东西做起来很曲折 哎 这里总结一下笔者为了折腾本地图片显示的尝试 为什么要做本地图片展示呢 如果是做 ...

  6. 47从零开始用Rust编写nginx,配对还有这么多要求!负载均衡中的路径匹配

    wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 负载均衡, 静态文件服务器,websocket代理,四层TCP/UDP转发,内网穿透等,会将实 ...

  7. 使用KVM创建OEL虚拟机

    在Linux工作站上使用KVM创建虚拟机. 首先说下我的需求: 1.其他LAN内的笔记本也可以连接到这些KVM的虚拟机,因此需要配置使用桥接网络 2.创建一个虚拟机,采用最小化安装系统,作为基础模版, ...

  8. Mac 和 windows上 好用的截图 工具 Snipaste

    Snipaste 官网:https://zh.snipaste.com/ ========================= 使用方法,比较简单,可以官网查看

  9. Java 数字 默认是 Integer类型的问题,System.currentTimeMillis() + (180 * 24 * 60 * 60 * 1000)的问题,剖析、Long + Integer的问题

    最终结论: (180 * 24 * 60 * 60) 这种计算表达式在 Java中是默认以 Integer类型来的,若不超过 Integer的最大值则没有问题,若超过则必须用 (180 * 24 * ...

  10. FDMemTable用法

    procedure TForm1.FormCreate(Sender: TObject); Var i:integer; begin // i:=15; self.FDMemTable1.FieldD ...