python抛出异常 作者:马育民 • 2024-05-28 13:23 • 阅读:10046 # 提出问题 定义 `login()` 登录函数如下,调用该函数登录时,如果登录成功就返回 `True` 这种设计是不好的,没有错误信息,即:**不知道用户名不存在,还是密码错误** 如下: ``` def login(username, password): if username == 'admin' and password == '123456': return True else: return False res = login('lilei@qq.com', '123456') ``` ### 解决 如果登录错误,就抛出异常,将 **用户名不存在,或 密码错误** 放入到异常中 # 说明 [](/upload/0/0/1IX7luqh7GYY.png) 抛异常类似上图:学生请普通病假,老师能做主,就直接处理 学生请传染病的假,老师不能做主,就要上报给院长 如果院长也不能做主,继续上报 内置异常类说明: 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. 上层程序处理异常同上 原文出处:http://malaoshi.top/show_1IX7lutKBOsk.html