自定义异常

自定义异常类:

当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 "注册成功";
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值