自定义异常类
虽然Java中已经有很多已经定义好的异常类了,但是有时候可能不能很好的满足我们的需求,这个时候我们就可以自己书写一个异常类,在程序中抛出了。
自定义一个输入名字异常,当名字为空,或者<5个字符,>20个字符时,则认为是输入异常:
首先我们需要先定义一个异常类:继承Exception类或者RuntimeException类
package com.dh.exception;
public class InputException extends Exception{
public InputException() {
}
//用于传递异常对象信息,在发生异常时控制台输出
public InputException(String message) {
super(message);
}
}
然后书写一个测试方法,在方法内定义如何算发生异常,并在发生异常时抛出我们自己写的异常类对象
这里用到一个新的关键字,throw,用于在方法体中抛出一个异常类对象,在本方法体中采用两种方式处理,但是一般不用try...catch操作,你自己抛的,自己有catch住,就没意思了,所以一般使用throws抛出。
package com.dh.exception;
public class Test {
public static void inputName(String name) throws InputException {
if(name == null ||name.length()<5 ||name.length()>20){
//throw出我们自定义异常类对象
throw new InputException("名字输入不合法!");
}
}
public static void main(String[] args) {
try {
inputName("a");
} catch (InputException e) {
e.printStackTrace();
}
}
}
当程序发生异常时,结果:
com.dh.exception.InputException: 输入名字不合法!
at com.dh.exception.Test.inputName(Test.java:8)
at com.dh.exception.Test.main(Test.java:18)
Process finished with exit code 0
程序就输出了我们自定义的异常信息啦!
总结:
- 书写一个类,看需求继承RuntimeException,或者是Exception;
- 在类中书写两个构造方法,一个无参构造,一个为参数为String的有参构造,并且调用父类的有参构造;
- 确定抛出异常的条件,在里面使用throw关键字,throw new 自定义异常类,并且在该方法声明中使用throws抛给调用者;
- 处理该抛出的异常。