python抛出异常

提出问题

定义 login() 登录函数如下,调用该函数登录时,如果登录成功就返回 True
这种设计是不好的,没有错误信息,即:不知道用户名不存在,还是密码错误

如下:

def login(username, password):
    if username == 'admin' and password == '123456':
        return True
    else:
        return False


res = login('lilei@qq.com', '123456')

解决

如果登录错误,就抛出异常,将 用户名不存在,或 密码错误 放入到异常中

说明

抛异常类似上图:学生请普通病假,老师能做主,就直接处理
学生请传染病的假,老师不能做主,就要上报给院长
如果院长也不能做主,继续上报

内置异常类说明:
http://www.malaoshi.top/show_1EF2I6EXS38I.html

语法

抛出异常用关键字 raise

# 抛出异常类对象
raise 异常类('错误信息')

例子

登录失败就应该抛出异常

def login(username,password):
    if username == 'admin' and password == '123456':
        return True
    else:
        # 抛出异常
        raise Exception("用户名不存在或密码错误!")


try:
    login('lilei@qq.com', '123456')
    // login('admin', '123456')
    print("登录成功!")
except Exception as e:
    print(e)

处理异常的原则

异常处理原则,相当于 学生遇到问题,能解决就自己解决,解决不了就把问题抛给老师,老师能解决的就解决,解决不了的就抛给校长

总结如下:

  1. 如果知道怎么处理异常,那就就用 try...except... 处理。
    很多时候不要只是打印错误,否则上层程序不知道是否运行成功,会导致上层程序出bug
  2. 如果不知道怎么处理,就把异常抛出去,让上层程序去处理
  3. 上层程序处理异常同上

原文出处:/show_1IX7lutKBOsk.html