示例来源:100个Java经典例子
示例9:
/**
* <p>Title : 捕捉和实现自己的异常类</p>
* <p>Description : 通过继承Exception类来实现自己的异常类,并且try-catch来捕获异常</p>
*/
class MyException extends Exception {
public MyException() {}
public MyException(String msg) {
super(msg);
}
public MyException(String msg, int val) {
super(msg);
i = val;
}
public int val() {
return i;
}
private int i;
}
public class Example9 {
public static void a() throws MyException{
System.out.println("Throw MyException from a() !");
throw new MyException();
}
public static void b() throws MyException{
System.out.println("Throw MyException from b() !");
throw new MyException("Originated in b()");
}
public static void c() throws MyException{
System.out.println("Throw MyException from c() !");
throw new MyException("Originated in c()", 24);
}
public static void main (String args[]) {
try {
a();
} catch (MyException e) {
e.getMessage();
System.out.println("************");
}
try {
b();
} catch (MyException e) {
//e.getMessage();
e.toString();
System.out.println("************");
}
try {
c();
} catch (MyException e) {
e.printStackTrace();
System.out.println(e.val());
}
}
}
查漏补缺:
- Exception是一个类,不是一个接口;
- Exception类中的一个构造方法:Exception(String name)
- throws关键字主要用于方法声明上,指的是方法之中出现的异常由调用处进行处理;
- 抛出的是MyException异常,那么也需要用MyException进行接收处理;
- e.getMessage() : 获得错误信息;e.toString() : 获得异常种类和错误信息;e.printStackTrace() : 在控制台打印出异常种类错误信息和出错位置