使用自定义异常一般有如下步骤:
1,通过继承java.lang.Exception类声明自己的异常类。
2,在方法适当的位置生成自定义异常的实例,并用throw语句抛出。
3,在方法的声明部分用throws语句声明该方法可能抛出的异常。
例:
class MyException extends Exception {
private int id;
public MyException(String message, int id) {
super(message);
this.id = id;
}
public int getId() {
return id;
}
}
public class TestEx1 {
public void regist(int num) throws MyException {
if (num < 0) {
throw new MyException("人数为负值,不合理", 3);
}
System.out.println("登记人数" + num);
}
public void manager() {
try {
regist(100);
} catch (MyException e) {
System.out.println("登记失败,出错类型码=" + e.getId());
e.printStackTrace();
}
System.out.print("操作结束");
}
public static void main(String[] args) {
TestEx1 t = new TestEx1();
t.manager();
}
}
运行结果:
登记人数100
操作结束
注意:
重写方法需要抛出与原方法所抛出异常类型一致异常或不抛出异常。
例:
class A {
public void method() throws IOException {...}
}
class B extends A {
public void method() throws FileNotFoundException{...}
}//错,重写方法抛出的异常与原方法抛出的异常必须一致
class C extends A {
public void method() throws Exception{...}
}//错,C抛出的异常范围大了,IOException属于Exception。即使抛出的范围小了一样不行。
class D extends A {
public void method() {...}
}//对,因为D没有抛出异常
class E extends A {
public void method() throws IOException,MyException {...}
}//错,E抛出的异常多了MyException