Day 25 异常处理

Python异常处理机制及常见报错

知识点回顾:

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

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

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

一、异常处理机制

异常处理机制是编程中用于处理程序运行时错误的一种方式。当程序在执行过程中遇到错误(如除以零、文件不存在等),它会抛出一个异常。如果没有适当的处理机制,程序可能会崩溃。通过使用异常处理,程序可以优雅地处理这些错误,继续执行或提供有用的错误信息。
 Python中的异常处理
在Python中,异常处理主要通过 try 、 except 、 else 和 finally 语句来实现:

try :用于包裹可能会引发异常的代码块。
except :用于捕获和处理特定类型的异常。可以有多个 except 块来处理不同类型的异常。
else :如果 try 块中没有引发异常,则执行 else 块中的代码。
finally :无论是否引发异常, finally 块中的代码都会执行,通常用于清理资源(如关闭文件)。

二、debug过程中的各种报错

SyntaxError (语法错误)

原因: 代码不符合 Python 的语法规则,解释器在尝试解析代码时就会失败。这种错误在程序 运行之前 就会被检测到。

NameError (名称错误)

原因: 尝试使用一个未被定义的变量、函数或对象的名称。

TypeError (类型错误)

原因: 对一个不支持该操作的数据类型执行了某个操作或函数。

ValueError (值错误)

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

IndexError (索引错误)

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

KeyError (键错误)

原因: 尝试访问字典中一个不存在的键。

AttributeError (属性错误)

原因: 尝试访问一个对象没有的属性或方法。

ZeroDivisionError (除零错误)

原因: 尝试将一个数字除以零。

FileNotFoundError (文件未找到错误)

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

ModuleNotFoundError (导入错误)

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

“traceback”(回溯信息),这个信息非常重要,它会告诉你:

1. 错误类型 (e.g., NameError, TypeError)

2. 错误发生的文件名和行号

3. 导致错误的那行代码

4. 错误的简要描述

后续在代码报错时要试着自己去看代码报错的类型,提高自己对代码报错的解决能力,而不是一味的让ai帮忙解决

三、try-except机制

try:把你认为可能会出错的代码放在这里。

except:如果 try 块里的代码真的出错了(从出错开始就不会继续执行try之后的代码了),Python 就会跳到 except 块里执行这里的代码,而不是崩溃。

四、try-except-else-finally机制

try - except- else -fiinally

try: 包含可能引发异常的代码。

except: 处理在 try 块中发生的特定异常。

else: (可选)如果 try 块中没有发生任何异常,则执行此代码块。

finally: (可选)无论 try 块中是否发生异常,总会执行此代码块。

为什么使用 else?

1. 清晰性: 它清楚地将“主要尝试的操作(可能出错)”与“操作成功后的后续步骤”分开。

2. 避免意外捕获: 如果把“成功后的后续步骤”也放在 try 块里,而这些步骤本身也可能引发 try 块想要捕获的同类型异常,那么就会导致逻辑混淆。else 块中的代码不会被同一个 try 块的 except 子句捕获。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值