12.4 自定义异常
异常是可以自己定义的,只需要继承异常类RuntimeException就可以,通常用于业务中出现异常现象,而这种异常仅仅在这个业务系统里才有意义,例如一个学籍系统,学生的学号非常重要,但偏偏有可能某些学生的学号有重复,那么可以定义一个学号重复异常。如下面代码所示:
public class StudentIdNotUniqueException extends RuntimeException{}
1.所有异常都必须继承这个RuntimeException类,它是所有异常的超类。
2.有时候这样一个定义就足够了,不需要任何代码,异常的类型本身就已经是一种信息。
如果需要,可以重写下面代码的这两个方法:这两个方法都返回一个String对象,描述这个异常
public class StudentIdNotUniqueException extends RuntimeException{ @Override public String getMessage(){ //TODO自动生成的方法存根 return super.getMessage(); } @Override public String toString(){ //TODO自动生成的方法存根 return super.toString(); }}
还可以继承Exception,但这类异常必须在方法中声明throws或者直接用catch处理,例如有这样的异常:
public class CodesspException extends Exception{}
任何方法抛出此异常,必须在方法中用throws声明,否则如下所示出语法错误:
或者用catch处理:
但这样就奇怪了,自己抛出的异常马上要处理,如果是这样又何必用抛出,直接在if语句下处理就可以了,所以一般选择是抛出。