Java自定义异常类

Java自定义异常类

一.前言

1.什么是自定义异常类

在开发中根据自己业务的异常情况来定义异常类。

2.为什么要自定义异常类

虽然JDK中定义过异常类,但是我们在实际的开发中会碰到很多奇奇怪怪的需求,当程序出现异常的时候,我们要根据实际的业务去抛出异常,这时候JDK中的异常类已经无法满足我们了,就需要我们自己去定义异常类了。

3.异常类如何定义

我们可以继承于java.lang.Exception自定义一个编译期异常。
我们可以继承于java.lang.RuntimeException自定义一个运行时期的异常类。

二.代码实现

我们模拟登录操作,如果用户账号或者密码不正确,则抛出异常并给予一些温馨提示。

1.编写LoginException类

首先定义一个登陆异常类

package com.temperature.humidity.system.exception;

/**
 * 登录异常
 */
public class LoginException extends Exception {
    /**
     * 空参构造
     */
    public LoginException() {
    }

    /**
     *
     * @param message 表示异常提示
     */
    public LoginException(String message) {
        super(message);
    }
    
}

2.编写Demo测试类

模拟登陆操作,我们使用Map模拟数据库中存储的数据,并提供当前用户是否存在方法用于判断。

package com.temperature.humidity.system.exception;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * 自定义异常测试类
 */
public class Demo {

    /**
     * 定义一个map用于存储用户信息
     * key存储用户的账号
     * value存储用户的密码
     */
    private static final Map<String, String> userMap = new LinkedHashMap<>();

    /**
     * 初始化一些用户的账号和密码
     */
    static {
        userMap.put("heyu", "123");
        userMap.put("guodegang", "1234");
        userMap.put("yuqian", "12345");
        userMap.put("xiaolizi", "123456");
    }

    public static void main(String[] args) {
        try {
            //用户输入的账号和密码
            String username = "heyu";
            String password = "123";
            checkUser(username, password);
            System.out.println("用户" + username + "登录成功!");
            //捕获LoginException异常
        } catch (LoginException e) {
            //打印异常信息
            System.out.println("e = " + e);
        }
    }

    /**
     * 该方法用于检验用户的账号或者密码是否正确
     */
    public static void checkUser(String username, String password) throws LoginException {
        //通过传入的username为map的key查找对应的passwordDb
        String passwordDb = userMap.get(username);
        //如果密码为空或者是个空字符串,则抛出LoginException异常
        if (passwordDb == null || "".equals(passwordDb)) {
            throw new LoginException("用户" + username + "不存在,请重新登录!");
        }
        //如果传入的password和passwordDb不相等,则抛出LoginException异常
        if (!passwordDb.equals(password)) {
            throw new LoginException("用户" + username + "密码错误,请重新登录!");
        }
    }

}

三.测试

1.测试用户账号不存在

我们将账号改为xxx并将密码为123,可以看到后台打印出如下所示的文字,测试成功。
在这里插入图片描述

2.测试用户密码错误

我们将账号改为heyu并将密码为1238888,可以看到后台打印出如下所示的文字,测试成功。
在这里插入图片描述

3.测试用户登陆成功

我们将账号改为heyu并将密码为123,可以看到后台打印出如下所示的文字,测试成功。
在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值