当前位置: 首页 > 知识库问答 >
问题:

方法返回语句vs try-catch

欧阳翔
2023-03-14

我在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;
}

另一个观察结果是:如果取消对最后一条“return result”语句的注释,则会得到一条错误消息:
变量结果可能未初始化
;如果对最后一条“return result”进行注释,则会得到一条错误消息:

缺少return语句

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

共有1个答案

乐正意智
2023-03-14

在j=0的情况下,将抛出并捕获异常(通过catch)。并打印消息。问题是:如果我不想从这个方法返回任何结果,在除以零的情况下,我仍然必须返回一些值,或者还有其他方法?从catch子句中使用“throw”?

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

另一个观察:如果取消对最后一条return result语句的注释,我会得到一条错误消息:变量result可能没有初始化

如果我对last“return result”进行注释,我会得到一条错误消息:缺少return语句,但我已经在try子句中包含了return语句。

在本例中,如果try块中发生异常,则执行catch块和函数主体的其余部分,并且没有其他return语句与方法的签名匹配。必须在所有执行路径上返回int值。

 类似资料:
  • } 当我运行这段代码时,我得到以下错误: 我该怎么做来解决这个问题呢? 见下面的条件:给定一个从1到4(含)的数字,返回该数字的一个单词表示。例如,给定2,返回2。如果数字大于4,则返回短语“太大”。如果数字小于1,则返回短语too small。

  • 我不得不使用全局变量found来指示在哪里找到了一个和。返回语句始终未定义。 此外,如果在下面的if语句中使用return语句,代码将无法正常工作。 这不是问题的最佳解决方案,但这是我得到的工作版本。 返回语句之间的****,删除时代码工作,否则我要么得到false或未定义。我不明白这部分!为什么删除返回就能解决问题,我认为每个递归调用都必须用返回语句进行。 问题可能是由于多次呼叫造成的吗?我是不

  • 问题内容: 为什么这给了我一个丢失的退货陈述错误?每个if / else都有返回值,最后一个括号出现错误 问题答案: 每个语句都在一个语句内。虽然从逻辑上讲这是不可能的,但是当所有评估都不为真时,编译器需要返回。 我建议: 我认为,此解决方案可解决编译器问题并稍微提高可读性。 或者,有以下解决方案: 引发异常将使你可以退出方法而无需返回任何信息……因为可以说,如果到达最后一个,显然会出错。

  • 问题内容: 我刚刚学习(正在学习)函数参数在Python中的工作方式,并且在没有明显原因的情况下开始进行实验: 给出了输出: 哪里来的?还有,这是什么? 问题答案: 它是函数的返回值,您可以将其打印出来。如果没有语句(或者只是没有参数的),则将隐式添加到函数的末尾。 您可能想返回函数中的值,而不是打印它们:

  • 我做了一点实验,发生了一些我认为没有预料到的事情。这个问题是基于递归和第7行注释的返回语句 我的问题是,在使用示例输入“1 9 11 5 6”的测试期间,如果我有返回语句。输出仅为“值1 9 11总计21”,但如果没有return语句,输出为“值1 9 11总计21,值1 9 5 6总计21”。我想知道是否有什么可以解释为什么,我认为return语句会简单地“加速”结束这个方法的递归实例,而不是简