java 异常处理 finally_48.java异常处理之finally

finally

1: 实现方式一:

try{ // 可能发生异常的代码 } catch( 异常类的类型 e ){ // 当发生指定异常的时候的处理代码 }catch...            比较适合用于专门的处理异常的代码,不适合释放资源的代码。

2:实现方式二:

try{  } catch(){} finally{ // 释放资源的代码 }

finally块是程序在正常情况下或异常情况下都会运行的。

比较适合用于既要处理异常又有资源释放的代码

3:实现方式三

try{  }finally{ // 释放资源 }

比较适合处理的都是运行时异常且有资源释放的代码。

4:finally:关键字主要用于释放系统资源。

1:在处理异常的时候该语句块只能有一个。

2:无论程序正常还是异常,都执行finally。

5:finally是否永远都执行?

1:只有一种情况,但是如果JVM退出了System.exit(0),finally就不执行。

2:return都不能停止finally的执行过程。

6:案例使用流

1:使用FileInputStream加载文件。

导包import java.io.FileInputStream;

2:FileNotFoundException

导入包import java.io.FileNotFoundException;

3:IOException

import java.io.IOException;

public classFinallyDemo {//本例子使用finally 关闭系统资源。

public static voidmain(String[] args) {

FileInputStream fin= null;try{

System.out.println("1创建io流可能出现异常");

fin= new FileInputStream("aabc.txt"); //加载硬盘的文本文件到内存,通过流//System.out.println(fin);

} catch(FileNotFoundException e) {

System.out.println("2没有找到abc.txt 文件");

System.out.println("3catch 了");//System.exit(0);//return;

}//finally

finally{

System.out.println("4fianlly执行");if (fin != null) { //如果流对象为null 流对象就不存在,没有必要关闭资源

try{

fin.close();

}catch(IOException e) {

e.printStackTrace();

System.out.println("close 异常");

}

}

System.out.println("5finally over");

}

System.out.println("6mainover");

}

}//2:无论程序正常还是异常,都执行finally。 但是遇到System.exit(0); jvm退出。//finally用于必须执行的代码, try{} catch(){}finally{}//try{}finally{}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java 中的 finally 语句可以在 try 块执行完后一定会被执行。在 finally 语句中输出所有元素可以在 try 块中使用循环遍历所有元素,在 finally 块中再次进行输出。代码如下: ``` List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); try { for (Integer i : list) { System.out.println(i); } } catch (Exception e) { e.printStackTrace(); } finally { for (Integer i : list) { System.out.println(i); } } ``` ### 回答2: 在Java中,finally语句被用于定义一段代码,这段代码无论try和catch语句块中是否发生异常,都会被执行。finally语句一般被用于清理和释放资源,如关闭文件和销毁对象等。 对于输出所有元素这个需求,我们可以考虑如下示例代码: ```java public class Main { public static void main(String[] args) { int[] numbers = {1, 2, 3, 4, 5}; try { // 尝试输出数组中元素 for (int i = 0; i < numbers.length; i++) { System.out.println(numbers[i]); } } catch (Exception e) { e.printStackTrace(); } finally { // 输出数组中所有元素 System.out.print("数组中的元素为:"); for (int i = 0; i < numbers.length; i++) { System.out.print(numbers[i] + " "); } } } } ``` 在上面的代码中,我们使用了try-catch-finally语句块,其中try语句块中尝试输出数组中的元素,catch语句块用于捕获异常并打印异常信息,而finally语句块则用于输出数组中的所有元素。 当程序运行时,先尝试输出数组中的元素,如果没有出现异常,则不执行catch语句块,直接执行finally语句块输出所有元素;如果出现异常,则先执行catch语句块打印出异常信息,然后再执行finally语句块输出所有元素。 总之,finally语句块可以保证无论try语句块是否出现异常,它里面的代码都会被执行,这一点对于保证代码具有健壮性和稳定性非常重要。 ### 回答3: 在Java编程中,使用finally语句可以确保无论是否发生异常,都能执行特定的语句块。这对于资源清理或保证代码安全性非常重要。 在处理异常时,finally语句通常用于释放资源或者执行一些善后操作。在以下示例中,我们可以通过finally语句输出一个数组的所有元素。 ``` public class FinallyExample { public static void main(String[] args) { int[] arr = { 1, 2, 3, 4, 5 }; try { for (int i = 0; i < arr.length + 1; i++) { System.out.println(arr[i]); } } catch (ArrayIndexOutOfBoundsException e) { System.out.println("数组越界异常:" + e); } finally { System.out.println("数组所有元素:"); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } } } } ``` 在以上代码中,我们首先定义了一个数组,并在try块中通过循环输出数组的所有元素。在数组越界时,我们使用catch块捕获异常,并输出异常信息。 接下来,我们使用finally语句输出数组的所有元素。即使在try块中出现了异常finally语句也能被执行。在这个例子中,我们可以看到在数组越界异常发生后,finally语句仍然能够把数组的所有元素正常输出。 这告诉我们finally语句的重要性:无论代码是否正常执行,finally语句始终能够得到执行,让我们更加高效、安全地编写程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值