- 使用try和except可捕获异常,即在出现异常后不会将代码终止运行,而是执行except中的代码处理异常
| ''' |
| 格式: |
| try: |
| 可能出现异常的代码 |
| except: |
| 如果出现了异常,就执行其中的代码 |
| ''' |
| |
| |
| try: |
| file = open('test.py', 'r') |
| except: |
| file = open('test.py', 'w') |
| |
- 捕获指定类型的异常
- 在except后边添加异常类型,就可捕获指定类型的异常
- 如果想要捕获多种异常
- 在except后添加多个异常类型,用逗号隔开,用括号包裹变成一个元组
- 或可书写多个except
- 如所有异常类型都无法捕获到该异常,或要捕获未知类型的异常,可使用Exception
- 在异常类型后添加as变量名,变量就是异常对象,打印该对象就可以出现错误信息
- try嵌套,如果里面的try没有捕获到这个异常,那外面的try会接收到这个异常,然后进行处理,如果外边的try依然没有捕获到,那么再进行传递。
| |
| try: |
| print('2' + 1) |
| print(a) |
| print(1 / 0) |
| except (ZeroDivisionError, NameError) as error: |
| print('出现异常!', error) |
| except Exception as e: |
| print('出现未知异常', e) |
- else 和 finally
- else: try中控制的代码没有出现异常,则执行该结构内的代码
- finally:无论出现什么情况都会执行finally里边的代码,哪怕程序崩溃
| ''' |
| 格式: |
| try: |
| 可能会出现异常的代码 |
| except: |
| 在出现异常后执行该命令处理异常 |
| else: |
| 当没有出现异常时,执行该代码 |
| ''' |
| try: |
| a = 1 |
| print(a) |
| except: |
| print('出现异常了') |
| else: |
| |
| print('没有异常,虚惊一场') |
| |
| ''' |
| try: |
| 可能出现异常的代码 |
| except: |
| 代码出现异常后执行该代码处理异常 |
| else: |
| 如果try中的代码不出现异常,则执行其中的代码 |
| finally: |
| 无论如何都会执行finally中的代码 |
| ''' |
| |
| |
| try: |
| a = 1 |
| print(a) |
| print(1/0) |
| except NameError: |
| print('出现异常了') |
| else: |
| print('没有出现异常') |
| finally: |
| print('出现不出现异常都要执行') |
| |
| |
| print('try结构之外书写内容') |
- 自定义异常抛出
- 自定义异常一定要继承自Exception
- 自定义异常可以使用raise抛出,可以进行捕获或者导致程序终止
- raise可以抛出系统异常,也可以抛出自定义异常
| |
| |
| |
| class PassWorldError(Exception): |
| error_count = 0 |
| |
| def __init__(self, str): |
| super().__init__(str) |
| |
| PassWorldError.error_count += 1 |
| |
| |
| |
| try: |
| password = input('请输入您的密码:') |
| if len(password) < 6: |
| raise PassWorldError('您的密码不足6位,请重新输入') |
| |
| except PassWorldError as error: |
| print(error) |
| |
| |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章