问答详情
源自:1-3 Java中通过案例学习 try...catch...finally

为什么我的最后一个finally那里显示有问题,是非法类

package imooc_exception_demo;

public class TryCatchText {
    public static void main(String[] args) {
        TryCatchText tc = new TryCatchText();
        int result = tc.text();
        int result2 = tc.text2();
        System.out.println("方法执行完毕,返回值为:" + result);
System.out.println("text2执行完毕");
    }

    /*
    devider(除数)result(结果)
    try-catch捕获while循环
    每次循环devider-1次,result+=100/devider
    若有异常打印抛出异常了返回-1否则返回result
     */
    public int text() {
        int devider = 10;
        int result = 100;
        try {
            while (devider >= -1) {
                devider--;
                result = result + 100 / devider;
            }
            return result;
        } catch (Exception e) {
            System.out.println("输出异常了");
            return -1;
        }
    }


    /*
devider(除数)result(结果)
try-catch捕获while循环
每次循环devider-1次,result=999
若有异常打印抛出异常了返回-1否则返回result
finally:这是finally!!,输出result
 */
    public int text2() {
        int devider = 10;
        int result = 100;
        try {
            while (devider >= -1) {
                devider--;
                result = result + 100 / devider;
            }
            return result;
        } catch (Exception e) {
            System.out.println("输出异常了");
            return result = 999;
        }
    }
    finally
    {
        System.out.println("这是finally!!");
        System.out.println("我是result,我的值是:" +result );

    }
}


提问者:weixin_慕容0104332 2020-02-21 19:00

个回答

  • 我不是混子
    2021-02-05 15:58:58

    你应该把finally放进函数中,

    在return result = 999;删掉一个“}”然后在最后加一个“}”


  • weixin_慕容0104332
    2020-02-24 12:46:09

    位置应该没关系,突然发现是finally前面多了一个“}”,?

  • 阿双otw
    2020-02-23 17:39:12

    try{}catch{}finally{}

    这三者是同一层次的。你代码里面的finally位置有问题

  • weixin_慕容0104332
    2020-02-22 15:07:49

    没用结果还是一样


  • qq_慕无忌6492010
    2020-02-22 15:04:58

    给catch加一句e.printStackTrace();试试