paul亡命天涯 2022-07-13 13:22 采纳率: 66.7%
浏览 30
已结题

关于try catch的问题


public static void main(String[] args) {
        f2();
    }

    //自己捕捉异常
    public static void f2()  {
        f1();
        try {
            InputStream is = new FileInputStream("e:\\2\\abc.txt");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        System.out.println("f2...");
    }

    //自己捕捉异常
    public static void f1()  {
        System.out.println("test throws");
        try {
            InputStream is = new FileInputStream("e:\\2\\abc.txt");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        System.out.println("f1...");
    }

我把System.out.println("f1...")和System.out.println("f2...")放在catch这行后面,程序在异常出现后会往下执行,这是意料之中的,但是把System.out.println("f1...")和System.out.println("f2...")放在try里面InputStream的下一行,就不会执行,这是JVM把InputStream和System.out.println当作共同体异常处了吗?所以JVM认为异常处往后没有代码了,直接结束程序?这样理解对吗?如果是对的,那为什么还有那么多人喜欢把代码都放在try里面呢?

  • 写回答

3条回答 默认 最新

  • it_hao528 2022-07-13 13:35
    关注

    可以当做共同体,但是不是说JVM认为异常处往后没代码了,try里边的相当于是一个整体,无论运行到哪里,只要出现异常,则try里边异常下的代码将不会执行直接执行catch,所以在try-catch下边的可以执行,但是try中异常下的不执行了。
    开发中之所以使用try-catch是为了程序的稳健,避免因为一点错误导致整个服务器挂掉。还有你说的都喜欢把代码放在try里边,其实也并不是都喜欢把代码都放在try里边,而是一些需要用到try-catch的逻辑代码才会放进去。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月22日
  • 已采纳回答 7月14日
  • 创建了问题 7月13日

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料