我的程序遇到一个奇怪的问题。我编写了以下代码:
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方法后,如何进行此类异常处理并获取具有值的变量。
答案 0 :(得分:0)
由于每当b大于0时都会引发异常,因此在以2值运行它时会引发异常。因此,永远不会更新结果,并且在程序末尾显示0。 >
要获得正确的输出,您将需要在除法中更改if语句,以使b大于1时都不会引发异常。
答案 1 :(得分:0)
在catch
内的throw e;
内,您抛出了一个已经捕获的错误。
这就是为什么
int c = a / b;
不执行。
如果删除
throw e;
结果您将得到6。