Mar*_*tin 4 java exception try-catch throw
对于下面的方法,当它不在“try”块内时是否可以抛出异常?
public void setCapacity(x) throws CapacityExceededException {
if (x > 10) throw new CapacityExceededException(x);
else this.x = x;
}
Run Code Online (Sandbox Code Playgroud)
是的,当它不在 try 块内时抛出异常是可以的。您所要做的就是声明您的方法抛出异常。否则编译器会报错。
public void setCapacity(x) throws CapacityExceededException {
if (x > 10) throw new CapacityExceededException(x);
else this.x = x;
}
Run Code Online (Sandbox Code Playgroud)
如果您CapacityExceededException扩展了运行时异常,您甚至不必这样做。
public void setA(int a) {
this.a = a;
if(a<0) throw new NullPointerException();
}
Run Code Online (Sandbox Code Playgroud)
此代码不会给出任何编译器错误。因为 NPE 是一个 RuntimeException。
当您抛出异常时,异常将传播到调用setCapacity()方法的方法。该方法必须通过 try catch 处理异常,或者通过重新抛出异常将其传播到调用堆栈上。