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/