1、自定义异常类的定义
(1)通过阅读异常源代码:发现java中所有的异常类,都是继承Throwable,或者继承Throwable的子类。这样该异常才可以被throw抛出;
(2)说明这个异常体系具备一个特有的特性:可抛性:即可以被throw关键字操作;
(3)查阅异常子类源码,发现每个异常中都调用了父类的构造方法,把异常描述信息传递给了父类,让父类帮我们进行异常信息的封装。例如NullPointerException异常类源代码:
1 public class NullPointerException extends RuntimeException { 2 public NullPointerException() { 3 super();//调用父类构造方法 4 } 5 public NullPointerException(String s) { 6 super(s);//调用父类具有异常信息的构造方法 7 } 8 }
(4)自定义异常格式:
1 Class 异常名 extends Exception{ //或继承RuntimeException 2 public 异常名(){ 3 } 4 public 异常名(String s){ 5 super(s); 6 } 7 }
(5)自定义异常继承Exception演示
1 class MyException extends Exception{ 2 /* 3 为什么要定义构造函数,因为看到Java中的异常描述类中有提供对异常对象的初始化方法。 4 */ 5 public MyException(){ 6 super(); 7 } 8 public MyException(String message) { 9 super(message);// 如果自定义异常需要异常信息,可以通过调用父类的带有字符串参数的构造函数即可。 10 } 11 }
(6)自定义异常继承RuntimeException演示
1 class MyException extends RuntimeException{ 2 /* 3 为什么要定义构造函数,因为看到Java中的异常描述类中有提供对异常对象的初始化方法。 4 */ 5 MyException(){ 6 super(); 7 } 8 MyException(String message) { 9 super(message);// 如果自定义异常需要异常信息,可以通过调用父类的带有字符串参数的构造函数即可。 10 } 11 }