异常捕获
什么是异常
代码运行出错会导致异常,异常发生后如果没有解决方案则会导致整个程序结束
异常三个重要组成部分
1、traceback
翻到最下面从下往上的第一个蓝色字体鼠标左键点击即可跳转到错误代码所在的行
2、xxxError
错误的类型
# 1、 print(idna) # NameError # 2、 l = [11,22,33] print(l[100]) # IndexError # 3、 d = {'username':'jason'} print(d['xxx']) # KeyError # 4、 int('abc') # ValueError
3、错误类型冒号后面的内容
错误的详细原因(很重要,仔细看完之后可能会找到解决方法)
错误的语法
1、语法错误
不被允许出现,出现了立马修改
2、逻辑错误
可以被允许,出现之后尽快修改即可
修改逻辑错误的过程其实就是在从头到尾理清思路的过程
异常捕获句式try的使用
1、基本语法格式
try: 有可能会出错的代码 except 错误类型 as e: 出错之后对应的处理机制(e是错误的详细信息) except 错误类型 as e: 出错之后对应的处理机制(e是错误的详细信息) except 错误类型 as e: 出错之后对应的处理机制(e是错误的详细信息)
try: int('abc') except NameError as e: print('变量名name不存在',e) except ValueError: print('值不是纯数字')
# 这样就不会报错
万能异常
格式:
try: int('abc') print(name) l = [11] l[100] except Exception: print('你来啥都行 无所谓')
异常捕获句式和万能异常使用
1、有可能会出现错误的代码才需要被监测
2、被监测的代码一定要越少越好
3、异常捕获使用频率越低越好
异常捕获的一些补充
else、finally、assert、raise
try: l = [] l [100] except NameError as e: print('名字错误') except KeyError as e: print('键错误') except IndexError as e: print('索引错误') else: print('当被监测的代码没有报错 正常运行结束之后会走') finally: print('无论被监测的代码是否报错 最终都需要走一下这里的子代码') # 断言 name = 'jason' assert isinstance(name,str) # 主动报错 # raise+c指定的错误类型 raise NameError
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构