gpt4 book ai didi

java - 方法返回语句与 try-catch

转载 作者:行者123 更新时间:2023-11-29 08:31:33 25 4
gpt4 key购买 nike

据我所知,在 Java 中可以通过两种方式报告错误:返回值和异常。

例如下面的代码:

int methodName(int i, int j) {
int result;

try {
result = i / j;
return result;
// in the case of j = 0, ArtithmeticException() will be thrown
}
catch (Exception e) {
System.out.println("Some message");
}

//return result;
}

j = 0 的情况下,将抛出异常并捕获(由 catch),并打印“Some message”。

问题是:如果我不想在除以零的情况下从此方法返回任何结果,我必须返回一些值还是有其他方法? IE。在 catch 子句中使用“throw”?

另一个观察结果:如果我取消注释最后一个 'return result' 语句,我会收到错误消息:

variable result might not have been initialized

如果我最后评论 'return result' 我会收到错误消息:

missing return statement

但是我已经在 try 子句中包含了 return 语句。

谢谢!

最佳答案

In case of j = 0 exception will be thrown and caught (by catch). And message will be printed. The question is: If I do not want to return any result from this method in the case of dividing by zero I still MUST return some value or there is another way? Using 'throw' from catch clause?

您必须返回一个与签名匹配的值(在此示例中为 int)或throw 一些东西,否则程序将无法编译。

And another observation: if I uncomment last return result statement I got an error message: variable result might not have been initialized

result 变量在 try block 中赋值。编译器不知道异常可能发生的确切时间点。如果在赋值完成前发生异常,然后在 return result 语句处,变量 result 可能没有值。解决方案是在 try block 之前设置一个值。

And if I comment last 'return result' I got an error message: missing return statement But I've already included return statement in try clause.

在这个例子中,如果在try block 中发生异常,然后执行 catch block 和函数体的其余部分,并且没有其他 return 语句匹配该方法的签名。您必须在所有执行路径上返回一个 int 值。

关于java - 方法返回语句与 try-catch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47726002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com