java - 抛出异常后的返回值

标签 java

public double get_volume(int a){
  try{
    if (a < 0) {
      // this gets caught in the catch block
      throw new IllegalArgumentException("Only Positive Numbers & no Letters Please!"); 
    }
    return a*a*a;
  } catch (IllegalArgumentException e) {
    System.out.println(e.getMessage());
  }
}

如果此函数接收到负值,则会抛出异常表示不允许。否则,它将继续计算体积。不知何故,我仍然需要返回一些值,但它真的需要吗?我如何正确编写此代码?

最佳答案

如果您在方法内部捕获异常而不向调用者抛出任何异常(就像您目前所做的那样),则必须在 catch 块中返回一些默认值。

在方法中不捕获异常可能更有意义,这将允许您在抛出异常时不返回任何内容。它还会通知调用者他们传递了无效输入。

public double get_volume(int a)
{
    if (a < 0) {
        throw new IllegalArgumentException("Only Positive Numbers & no Letters Please!"); 
    }
    return a*a*a;      
}

现在由调用者负责处理异常。

请注意,由于 IllegalArgumentException 是未经检查的异常(因为它是 RuntimeException 的子类),因此您无需声明您的方法 throws 此异常。但是,在抛出此异常时在 Javadoc 中进行描述会很有帮助。

关于java - 抛出异常后的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41931494/

相关文章:

Java 仅在后台启动进程

java - 多模块maven项目未为依赖模块部署可执行Jar

java - Java `synchronized` 是否阻止锁定对象引用或值?

java - IntelliJ Idea 不创建 manifest.mf、pom.xml、pom.properties

JAVA drawPolygon() - 参数说明

Java webapps 安全约束和自定义安全提供程序

Java泛型实例

java - 如何在 Java 的 If/Else 语句中为变量赋值后返回该变量?

Java:为什么循环中的 try-catch block 只执行一次?

java - 如何在Jetty源代码中调试?