当前位置: 首页 > news >正文

Java finally catch try关键字

Java finally catch try关键字

finally:

finally 关键字用来创建在 try 代码块后面执行的代码块;无论是否发生异常,finally 代码块中的代码总会被执行。
在 finally 代码块中,可以进行文件流关闭等收尾善后性质的语句

catch:

catch 关键字用于捕获异常并处理异常的代码块,通常与try关键字一起使用,可以使用多个 catch 代码块对异常进行多重捕获

try:

try 关键字用于包裹可能会抛出异常的代码块

使用示例

try{// 程序代码
}catch(异常类型1 异常的变量名1){// 程序代码
}catch(异常类型2 异常的变量名2){// 程序代码
}catch(异常类型3 异常的变量名3){// 程序代码
}finally{// 程序代码,如关闭文件流等善后操作
}

上述代码也可以改写成下面这种try-with-resources格式

try (resource declaration) {// 使用的资源
} catch (ExceptionType e) {// 异常块
}

try-with-resources:

try-with-resources是一种异常处理机制,它能够自动关闭在 try 块中声明的资源,无需显式地在 finally 块中关闭(JDK7 之后)

常见面试题:

finally 和 catch代码块中return的执行顺序问题

public static void main(String[] args) {System.out.println(a());System.out.println("-----------------");System.out.println(b());System.out.println("-----------------");System.out.println(c());}private static int a() {try{System.out.println(1/0);}catch(Exception e){System.out.println("catch is begin");return 1 ;}finally{System.out.println("finally is begin");}return 0;}private static int b() {try{//待捕获代码System.out.println(1/0);}catch(Exception e){System.out.println("catch is begin");return 1 ;}finally{System.out.println("finally is begin");return 2 ;}}private static int c() {try{//待捕获代码System.out.println(1/1);}catch(Exception e){System.out.println("catch is begin");return 1 ;}finally{System.out.println("finally is begin");return 2 ;}}

运行结果

catch is begin
finally is begin
1
-----------------
catch is begin
finally is begin
2
-----------------
1
finally is begin
2

依照这里的运行结果可以得出结论
1、无论是否有异常,finally中的代码都会执行
2、有异常的情况下,如果catch和finally代码块中均有return,则catch中的return不会被执行(或者覆盖);如果catch代码块中有return,finally代码块中没有return,则catch中的return会被执行

http://www.lryc.cn/news/364521.html

相关文章:

  • docker安装mysql8和mysql5.7
  • 通过一个例子,说明Python的责任链设计模式有什么优缺点
  • 场地预定小程序基于FastAdmin+UniApp
  • CrossPrefetch: Accelerating I/O Prefetching for Modern Storage——论文泛读
  • 详解 Spark Streaming 的 DStream 对象
  • QT常用控件
  • 如何解决chatgpt出现503 bad gateway的问题
  • Halcon 双相机标定与拼图(二)
  • 【加密与解密】【04】Java安全架构
  • 论文阅读:Neural Scene Flow Prior
  • 如何通过 6 种简单方法将照片从华为转移到 PC?
  • QtCharts使用
  • 深入分析 Flink SQL 工作机制
  • Spring Bean参数校验Validator
  • AOP案例
  • Facebook海外户Facebook广告被暂停的原因
  • 网站企业需要适用于什么服务器?
  • winscp无法上传,删除,修改文件并提示权限不够的分析
  • Hadoop3:MapReduce之InputFormat数据输入过程整体概览(0)
  • 【Leetcode Python】70.爬楼梯
  • 深度学习 - 张量的广播机制和复杂运算
  • 【CSS】will-change 属性详解
  • linux安装mysql后,配置mysql,并连接navicat软件
  • 【学习笔记】Axios、Promise
  • 自然资源-关于加强规划实施监督管理的指导意见(浙江省自然资源厅学习借鉴)
  • 408链表的创建和初始化
  • Python数据框/列表生成一列多个同样的值
  • 使用 MDC 实现日志链路跟踪,包教包会!
  • 【成都信息工程大学】只考程序设计!成都信息工程大学计算机考研考情分析!
  • 将单列数据帧转换成多列数据帧