DYNskr 2021-07-20 10:03 采纳率: 84.6%
浏览 58
已采纳

try/finally 的效果/目的是什么?


class Exception2 extends Exception{}


public class Boo {
String one = "1";
public void Boo1() throws Exception2 {
System.out.println("Boo1");
if( one.equals(1)){
throw new Exception2();
}
}
}

public class Boo11 {
public static void main (String[] args) throws Exception2{
try{
Boo11 vi = new Boo11();
vi.Boo111();
}finally{
System.out.println("finally");
}
}
public void Boo111() throws Exception2{
Boo b = new Boo();
b.Boo1();
}
}

最后一段如果这里没有try/finally,而且本来他就没有try/catch,又声明了异常,那么就是duck掉了异常,但是现在这里虽然声明了异常,却有try/finally,还是duck吗?或者说,声明了异常没有try/catch也没有try/finally的与声明了异常有try/finally的同一段代码对于异常的处理一样吗?都是duck?也就是不处理?两者之间唯一的不同就是有try/finally的代码执行了finally吗?

  • 写回答

1条回答 默认 最新

  • 八云黧 2021-07-20 10:38
    关注

    try/catch/finally语法中,catch不是必需的,也就是可以只有try/finally,表示不捕获异常,异常自动向上传递,但finally中的代码在异常发生后也执行。你说的没啥问题,try/finally的代码除了执行了finally和不处理没区别。因为finally语法主要是用来关闭try中使用到的资源(像IO流、数据库连接,socket通信之类的),不过java7引入了try-with-resources的语法糖所以现在finally其实也很少用了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 7月20日
  • 创建了问题 7月20日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助