异常处理
一:异常基础#
(1)异常概念:
(1)当程序在运行的时候 出现未知的错误
(2)如果没有进行处理 会呈现出异常 程序随之结束
(2)异常类型:
(1)语法错误:
(1)错误能立马发现 且作为程序与不能容忍语法错误
(2)如果发现语法错误 需要立马改正
(2)逻辑错误:
(1)程序在运行的时候 出现不可预知或者不可避免的错误
(2)针对该种错误可以通过异常捕获处理:
(3)常见的错误类型:
(1)NAMERROR 名字错误
(2)SyntaxError 语法错误
(3)KeyError 键不存在
(4)ValueError 值错误
(5)IndexError 索引错误
二:避免方法#
(1)如果针对错误是不能提前预知的 可以使用try....except.... 在错误发生之后进行处理
例如:

try: 被检测的代码块 except 异常类型: try中一旦检测到异常,就执行这个位置的逻辑 #举例 try: f=open('a.txt') g=(line.strip() for line in f) print(next(g)) print(next(g)) print(next(g)) print(next(g)) print(next(g)) except StopIteration: f.close()
(2)可以根据条件进行异常处理 如果错误条件可以提前预知 我们可以通过if进行处理 防止错误发送
例如:

AGE=10 while True: age=input('>>: ').strip() if age.isdigit(): #只有在age为字符串形式的整数时,下列代码才不会出错,该条件是可预知的 age=int(age) if age == AGE: print('you got it') break
(3)Exciption/BaseException
作用:当可能出现大量的异常的时候 其可以匹配任意类型的错误
例如:
try: name l = [1,2,3] l[111] d = {'name':'jason'} d['password'] # Exception except BaseException: # 万能异常 所有的异常类型都被捕获 print('老子天下无敌')
(5)finally:
作用:无论有没有异常 最后都会执行我
例如:
try: # name l = [1,2,3] l[111] # d = {'name':'jason'} # d['password'] except Exception: # 万能异常 所有的异常类型都被捕获 print('老子天下无敌') else: print('被检测的代码没有任何的异常发生 才会走else') finally: print('无论被检测的代码有没有异常发生 都会在代码运行完毕之后执行我')
rasie:
作用:主动抛出异常
例如:
主动抛异常 if 'egon' == 'DSB': pass else: raise TypeError('尽说大实话') 关键字raise就是主动抛出异常
assert:
作用:猜测数据的状态 猜对了正常执行 猜错了抛出异常
例如:
主动抛异常 if 'egon' == 'DSB': pass else: raise TypeError('尽说大实话') 关键字raise就是主动抛出异常
自定义异常:
作用:可以继承BaseException 通过该类可以自定义自己异常
例如:
class MyError(BaseException): def __init__(self,msg): super().__init__() self.msg=msg def __str__(self): return '<dfsdf%ssdfsdaf>' %self.msg raise MyError('我自己定义的异常')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!