自定义异常类:
当Java中的异常类无法针对性的对异常进行分类定义时候,就需要创建自己定义的异常类
1、定义的异常类必须要继承Exception或者RutimeException
继承Exception时需要将其抛出或者利用try…catch来进行捕获处理
继承RuntmeException时不需要进行处理,交给处理机处理
2、类中必须要创建空构造函数和含异常信息的构造函数
一般自定义的异常类应当是XXXException
继承Exception:
方法一:向上抛出:
class RepetiException extends Exception {
public RepetiException() {
}
public RepetiException(String message) {
super(message);
}
}
创建一个测试类来进行自定义异常使用:
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws Exception {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入新创建的标题:\n");
String aa=scanner.next();
System.out.println(show(aa));
}
public static String show(String title) throws Exception{
String [] titles={"城府文化","元成抉择"};
for (int i=0;i<titles.length;i++){
if (titles[i].equals(title)){
throw new RepetiException("输入的标题已经被别人注册了");
}
}
return "注册成功";
}
}
请输入新创建的标题:
城府文化
Exception in thread "main" RepetiException: 输入的标题已经被别人注册了
at Test.show(Test.java:15)
at Test.main(Test.java:9)
Process finished with exit code 1
方法二:try catch自己解决:
将会产生异常的代码放入try中
public static String show(String title) {
String [] titles={"城府文化","元成抉择"};
for (int i=0;i<titles.length;i++){
try{
if (titles[i].equals(title)){
throw new RepetiException("输入的标题已经被别人注册了");
}
}
catch (RepetiException e){
e.printStackTrace();
return "注册失败";
}
}
return "注册成功";
}
需要提前在try中声明RepetiException,catch中才能用,即:
try语句中没有抛出某一种异常,但是却用catch捕获该类型的异常了,这种情况就会报不能抛出异常错误XxxException
例如:
catch报错
继承RuntimeException:
不用向上抛出,不用捕获处理
自定义类继承RuntimeException:
class RepetiException extends RuntimeException
使用自定义异常:这时就不用抛出或者捕获处理了
public static String show(String title) {
String [] titles={"城府文化","元成抉择"};
for (int i=0;i<titles.length;i++){
if (titles[i].equals(title)){
throw new RepetiException("输入的标题已经被别人注册了");
}
}
return "注册成功";
}