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());
}
}
Run Code Online (Sandbox Code Playgroud)
如果此函数收到负值,则会抛出异常,表示不允许.否则,它将继续计算音量.不知怎的,我仍然需要返回一些价值,但它真的需要吗?我该如何正确编写这段代码?
如果您在方法中捕获异常而不向调用者抛出任何异常(正如您目前所做的那样),则必须在catch块中返回一些默认值.
在方法中捕获异常可能更有意义,这将允许您在抛出异常时不返回任何内容.它还会通知调用者他们传递了无效输入.
public double get_volume(int a)
{
if (a < 0) {
throw new IllegalArgumentException("Only Positive Numbers & no Letters Please!");
}
return a*a*a;
}
Run Code Online (Sandbox Code Playgroud)
现在,调用者负责处理异常.
请注意,由于IllegalArgumentException
是未经检查的异常(因为它是子类RuntimeException
),因此您不需要声明您的方法throws
此异常.但是,当您抛出此异常时,在Javadoc中进行描述会很有帮助.