从Java中的try catch块获取变量的问题

时间:2018-12-05 21:20:33

标签: java object try-catch

我的程序遇到一个奇怪的问题。我编写了以下代码:

class Divide{

    int a, b;

        int divide(int a, int b) {

            try {

             if (b > 1)
                    throw new ArithmeticException("Generating exception");}
             catch (ArithmeticException e) {
                System.out.println("Caught exception 1st time" + e);

             throw e;

            }
        int c = a / b;


        return c; 
    } 
}

然后,我想进行异常处理  并通过以下方式从中获取变量:

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {

    Divide d = new Divide();

    int result = 0;

                    try
                    {
                        result = d.divide(12, 2);

                    } catch (ArithmeticException e)
                    {
                        System.out.println("2 raz");
                    }

                    System.out.println(result); ///getting 0 insted of 6!

    }

}

在try-catch块之前,我仍然变得越来越不稳定。使用divade方法后,如何进行此类异常处理并获取具有值的变量。

2 个答案:

答案 0 :(得分:0)

由于每当b大于0时都会引发异常,因此在以2值运行它时会引发异常。因此,永远不会更新结果,并且在程序末尾显示0。 >

要获得正确的输出,您将需要在除法中更改if语句,以使b大于1时都不会引发异常。

答案 1 :(得分:0)

catch内的throw e;内,您抛出了一个已经捕获的错误。
这就是为什么

int c = a / b;

不执行。
如果删除

throw e;

结果您将得到6。