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 对于知识的学以致用的解释
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败