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
。