Java中从try-catch块获取变量时出现问题

Java中从try-catch块获取变量时出现问题,java,object,try-catch,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

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

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!

    }

}

而且我在试抓拦网之前还是会变的。在使用divade方法后,我如何进行这种类型的异常处理并获取variable with value。

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


要获得正确的输出,您需要更改divide方法中的if语句,以便在b大于1时不引发异常

抛e重新显示已捕获的错误
这就是为什么

int c = a / b;
没有执行
如果你移除

throw e;

结果将得到6。

半不相关,但a和b不需要在Divide类中声明,因为它们是在Divide方法以这两个变量作为参数创建时初始化的。为什么期望
6
?您为参数
b
传入一个
2
的值,因此
b>1
为真并引发异常,这意味着代码第一次打印
捕获的异常:算术异常:生成异常
2 raz
,这意味着从未执行
c=a/b
,也从未从返回值中分配
result