自定义异常和Unhandled exception type Exception
class Person {
public Person() {
}
int age;
public void setAge(int age) throws AgeOutOfBoundException { //正常code
if (age>=0) {
this.age = age;
}
else {
throw new AgeOutOfBoundException(age);
}
}
}
class AgeOutOfBoundException extends Exception {
public AgeOutOfBoundException(int age) {
// TODO Auto-generated constructor stub
super(String.valueOf(age));
}
}
编译报错code
class Person {
public Person() {
}
int age;
public void setAge(int age) { //异常code
if (age>=0) {
this.age = age;
}
else {
throw new AgeOutOfBoundException(age);
}
}
}
class AgeOutOfBoundException extends Exception {
public AgeOutOfBoundException(int age) {
// TODO Auto-generated constructor stub
super(String.valueOf(age));
}
}
原因:
在某个方法中,假如使用了throwable类,必须得对部分代码做try catch或者声明这一段会发生异常。
所以必须添加throw ...Exception.
重点来了:
为什么我在定义方法的时候需要加呢?我可不可以不加throw ....Exception?
答案是可以的。
原因如下,class AgeOutOfBoundException extends Exception 继承的是Exception类,Exception又包含两种,一种是RuntimeException,另一种是剩下的编译报错Exception。
假如继承了Exception,就会提示编译报错,那么继承RuntimeException就可以了。
是的确实如此:
class Person {
public Person() {
}
int age;
public void setAge(int age) {
if (age>=0) {
this.age = age;
}
else {
throw new AgeOutOfBoundException(age);
}
}
}
class AgeOutOfBoundException extends RuntimeException { //继承RuntimeException,而非Exception
public AgeOutOfBoundException(int age) {
// TODO Auto-generated constructor stub
super(String.valueOf(age));
}
}

浙公网安备 33010602011771号