欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > python打卡day25

python打卡day25

2025/5/15 6:39:28 来源:https://blog.csdn.net/weixin_64961833/article/details/147963500  浏览:    关键词:python打卡day25
python的异常处理机制

知识点回顾:

  1. 异常处理机制
  2. debug过程中的各类报错
  3. try-except机制
  4. try-except-else-finally机制

在即将进入深度学习专题学习前,我们最后差缺补漏,把一些常见且重要的知识点给他们补上,加深对代码和流程的理解。

作业:理解今日的内容即可,可以检查自己过去借助ai写的代码是否带有try-except机制,以后可以尝试采用这类写法增加代码健壮性。

异常处理的核心概念是:

  •  try: 包含可能会引发异常的代码块。程序会首先尝试执行这里的代码
  • except: 如果try块中的代码确实引发了特定类型的异常(或者任何异常,如果未指定类型),则执行此代码块
  • else: (可选)如果try块中的代码没有发生任何异常,则执行此代码块
  • finally: (可选)无论try块中是否发生异常,总会执行此代码块(常用于资源清理)

常见语句结构;

1、try-except

try:# 可能会引发异常的代码
except ExceptionType: # 最好指定具体的异常类型,例如 ZeroDivisionError, FileNotFoundError# 当 try 块中发生 ExceptionType 类型的异常时执行的代码

程序首先尝试执行 try 块中的代码,如果 try 块中的代码没有发生异常,则 except 块会被跳过,程序继续执行 try-except 结构之后的代码。如果 try 块中的代码发生了异常,Python会查找与该异常类型匹配的 except 块。如果找到匹配的,则执行该 except 块中的代码,然后继续执行整个 try-except 结构之后的代码(除非 except 块中又引发了新异常或执行了 return/break/continue 等)。如果未找到匹配的 except 块,异常会向上传播

类比: 你可以把它看作是:“尝试做这件事,如果出错了(并且是特定类型的错误),就执行补救措施。”

2、try-except-else

try:# 可能会引发异常的代码
except ExceptionType:# 当 try 块中发生 ExceptionType 类型的异常时执行的代码
else:# 当 try 块中【没有】发生任何异常时执行的代码

执行 try 块中的代码,如果 try 块中发生异常,则会查找并执行匹配的 except 块,else 块不会被执行。如果 try 块中没有发生任何异常,则会跳过所有 except 块,然后执行 else 块中的代码

print("--- try-except-else 示例 ---")def safe_divide(a, b):print(f"\n尝试计算 {a} / {b}")try:result = a / bexcept ZeroDivisionError:print("错误:除数不能为零!")return None # 或者其他表示失败的值except TypeError:print("错误:输入必须是数字!")return Noneelse:# 只有当 try 块中的 a / b 成功执行时,这里才会执行print("除法运算成功!")print(f"结果是: {result}")# 可以在这里进行基于成功结果的进一步操作print(f"结果的两倍是: {result * 2}")return result# 测试用例
safe_divide(10, 2)  # 成功
safe_divide(10, 0)  # ZeroDivisionError
safe_divide("10", 2) # TypeError (如果我们不先做类型转换的话)
safe_divide(20, "abc") # TypeErro

3.try-except-else-finally

finally 子句中的代码无论 try 块中是否发生异常,也无论 except 块是否被执行,甚至无论 try 或 except 块中是否有 return 语句,它总会被执行。这个特性,在机器学习和深度学习的中,多涉及资源的保存、文件的关闭等

一般的异常报错如下:

SyntaxError (语法错误)        原因: 代码不符合 Python 的语法规则(比如少个逗号冒号,表达式非法啥的),解释器在尝试解析代码时就会失败。这种错误在程序运行之前就会被检测到

NameError (名称错误)        原因: 尝试使用一个未被定义的变量、函数或对象的名称(手滑打错了变量名也是)

TypeError (类型错误)        原因: 对一个不支持该操作的数据类型执行了某个操作或函数

ValueError (值错误)        原因: 函数接收到的参数类型正确,但其值不合适或无效

IndexError (索引错误)        原因: 尝试访问序列(如列表、元组、字符串)中一个不存在的索引

KeyError (键错误)        原因: 尝试访问字典中一个不存在的键

AttributeError (属性错误)        原因: 尝试访问一个对象没有的属性或方法(比如说本该是方法的函数,被当成属性用了)

ZeroDivisionError (除零错误)        原因: 尝试将一个数字除以零

FileNotFoundError (文件未找到错误)        原因: 尝试打开一个不存在的文件(通常是在读模式下),或者路径不正确

ModuleNotFoundError (导入错误)        原因:尝试导入一个不存在的模块,或者模块存在但其中的特定名称找不到, Python 的模块加载器找不到这个模块。去安装库即可,如果是自定义的模块,配置好对应的路径

眼熟一下吧,免得报错了只会丢给大模型解答

@浙大疏锦行

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词