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

第一百一十六节 Java 面向对象设计 - Java 终止块

Java 面向对象设计 - Java 终止块

try ​块也可以有零个或一个​ finally​ 块。 ​finally ​块总是与 ​try ​块一起使用。

语法

使用 ​finally​ 块的语法是

finally  {// Code for finally block 
}

finally​ 块以关键字 ​finally​ 开始,后面紧跟一对大括号。

finally​ 块的代码放在大括号内。

try​,​catch​ 和​ finally​ 块有两种可能的组合:​ try - catch - finally ​或​ try - finally ​。

try ​块可以后跟零个或多个​ catch​ 块。

try​ 块最多可以有一个 ​finally​ 块。

try​ 块必须有一个​ catch​ 块,一个 ​finally​ 块,或者两者兼而有之。

try-catch-finally​ 块的语法是:

try  {// Code for try block
}
catch(Exception1 e1)  {// Code for catch block
}
finally  {// Code for finally block
}

try - finally ​块的语法是:

try  {// Code for try block
}
finally  {// Code for finally block
}

无论在相关联的​ try ​和 ​/​ 或 ​catch​ 块中发生什么,​finally ​块都被保证被执行。

通常,我们使用 ​finally​ 块来写清理代码。

例如,我们可能获得一些资源,当我们完成它们时,必须释放。

try - finally​ 块允许你实现这个逻辑。

您的代码结构将如下所示:

try  {// Obtain   and  use  some resources here
}
finally  {// Release the   resources that were  obtained in the   try  block
}

例子

下面的代码演示了​ finally ​块的使用。

public class Main {public static void main(String[] args) {int x = 10, y = 0, z = 0;try {System.out.println("Before dividing x  by  y.");z = x / y;System.out.println("After dividing x  by  y.");} catch (ArithmeticException e) {System.out.println("Inside  catch block a.");} finally {System.out.println("Inside finally  block a.");}try {System.out.println("Before setting  z  to 2.");z = 2;System.out.println("After setting  z  to 2.");}catch (Exception e) {System.out.println("Inside  catch block b.");} finally {System.out.println("Inside finally  block b.");}try {System.out.println("Inside try block c.");}finally {System.out.println("Inside finally  block c.");}try {System.out.println("Before  executing System.exit().");System.exit(0);System.out.println("After  executing System.exit().");} finally {// This finally block will not be executed// because application exits in try blockSystem.out.println("Inside finally  block d.");}}
}

上面的代码生成以下结果。

重新引用异常

捕获的异常可以重新引用。

public class Main {public static void main(String[] args) {try {m1();} catch (MyException e) {// Print the stack trace e.printStackTrace();}}public static void m1() throws MyException {try {m2();} catch (MyException e) {e.fillInStackTrace();throw e;}}public static void m2() throws MyException {throw new MyException("An  error has  occurred.");}
}class MyException extends Exception {public MyException() {super();}public MyException(String message) {super(message);}public MyException(String message, Throwable cause) {super(message, cause);}public MyException(Throwable cause) {super(cause);}
}

上面的代码生成以下结果。

相关文章:

  • MySQL 常用函数总结
  • SAP 新安装的系统,财务开账期OB52需要传输
  • C++的智能指针 RAII
  • 【AI应用探讨】— 盘古大模型应用场景
  • 如何选择合适的半桥栅极驱动芯片?KP8530X,KP85402,KP85211A满足你对半桥栅极驱动一切需求
  • Oracle最终还是杀死了MySQL
  • 步步为营:电商项目业务测试实战指南
  • 考试系统Spring Security的配置
  • SQL题:未完成率较高的50%用户近三个月答卷情况
  • 深入了解常用负载均衡软件
  • 第三方软件测试机构流程分享,软件检测报告需多少时间和费用?
  • 如何利用AI大模型设计电机本体?
  • 反激开关电源开关MOS管选择
  • 【漏洞复现】世邦通信 SPON IP网络对讲广播系统 addscenedata.php 任意文件上传漏洞
  • Linux 查看 CPU核数 及 内存
  • Brief introduction of how to 'Call, Apply and Bind'
  • Java 多线程编程之:notify 和 wait 用法
  • JavaScript服务器推送技术之 WebSocket
  • leetcode98. Validate Binary Search Tree
  • Python 基础起步 (十) 什么叫函数?
  • rabbitmq延迟消息示例
  • React16时代,该用什么姿势写 React ?
  • Redis在Web项目中的应用与实践
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • SpringCloud集成分布式事务LCN (一)
  • uva 10370 Above Average
  • 百度地图API标注+时间轴组件
  • 从0到1:PostCSS 插件开发最佳实践
  • 动态规划入门(以爬楼梯为例)
  • 基于 Babel 的 npm 包最小化设置
  • 来,膜拜下android roadmap,强大的执行力
  • 理清楚Vue的结构
  • 面试总结JavaScript篇
  • 事件委托的小应用
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 学习笔记:对象,原型和继承(1)
  • 自动记录MySQL慢查询快照脚本
  • gunicorn工作原理
  • 回归生活:清理微信公众号
  • 如何用纯 CSS 创作一个货车 loader
  • ​io --- 处理流的核心工具​
  • # Java NIO(一)FileChannel
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • #window11设置系统变量#
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (2)STM32单片机上位机
  • (C语言)二分查找 超详细
  • (差分)胡桃爱原石
  • (第27天)Oracle 数据泵转换分区表
  • (动态规划)5. 最长回文子串 java解决
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)c#+winform实现远程开机(广域网可用)
  • (力扣题库)跳跃游戏II(c++)
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (四)opengl函数加载和错误处理