python异常:综合案例-自定义异常、处理多个异常

案例介绍

是登录函数,需要输入 用户名密码,如果用户名不是 admin,提示 用户名不存在,请重新输入用户名
如果用户名是 admin,密码不是 123456,提示 密码不正确,请重新输入密码

分析

为了提示、处理不同的消息,自定义2个异常

实现一(有瑕疵)

def login(username,password):
    if username == 'admin':
        if password == "123456":
            return True
        else:
            raise Exception("密码不正确!")
    else:
        raise Exception("用户名不存在!")

调用测试:

try:
    # login("lilei","111")
    login("admin","111")
except Exception as e:
    print("异常信息:",e)
    print("请重新输入用户名")

执行结果:

异常信息: 密码不正确!
请重新输入用户名               # 该提示与上一行不符合逻辑

实现二

用户名不存在的异常类:

class UsernameNotExistError( Exception ):
    """
    用户名不存在
    """
    pass

密码错误的异常类:

class PasswordError (Exception):
    '''
    密码错误
    '''
    pass

登录函数:

def login(username,password):
    '''
    假设用户名必须是 admin,密码必须是123456
    '''
    if username != 'admin':
        raise UsernameNotExistError("用户名不存在!")
    else:
        if password != '123456':
            raise PasswordError("密码不正确!")
        else:
            return True

测试执行:

try:
    # res = login("lilei","111111")
    res = login("admin","111111")
    print("登录结果:" , res)
except UsernameNotExistError as ue:
    print("异常信息:",ue)
    print("请重新输入用户名!")

except PasswordError as pe:
    print("异常信息:",pe)
    print("请重新输入密码!")

原文出处:https://malaoshi.top/show_1IX5XjeVsdeY.html