提出问题
定义 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)
处理异常的原则
异常处理原则,相当于 学生遇到问题,能解决就自己解决,解决不了就把问题抛给老师,老师能解决的就解决,解决不了的就抛给校长
总结如下:
- 如果知道怎么处理异常,那就就用
try...except...处理。
很多时候不要只是打印错误,否则上层程序不知道是否运行成功,会导致上层程序出bug - 如果不知道怎么处理,就把异常抛出去,让上层程序去处理
- 上层程序处理异常同上
