0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python中有哪些常见的错误和异常

python爬虫知识分享 来源:python爬虫知识分享 作者:python爬虫知识分享 2022-03-04 16:58 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

python常见异常类型

在程序运行过程中,总会遇到各种各样的问题和错误。

有些错误是我们编写代码时自己造成的,比如语法错误、调用错误,甚至逻辑错误。下面这个例子,在输入 if 后输入回车了,没有按照 Python 的语法规则来,所以直接抛出了语法错误。

>>> if
  File "", line 1
    if
     ^
SyntaxError: invalid syntax

还有一些错误,则是不可预料的错误,但是完全有可能发生的,比如文件不存在、磁盘空间不足、网络堵塞、系统错误等等。下面这个例子,使用 open 函数打开 demo.txt 文件,可是在当前目录下并没有这个文件,所以一定会打开失败,抛出了IOError。

>>> fp = open('demo.txt')
Traceback (most recent call last):
  File "", line 1, in 
IOError: [Errno 2] No such file or directory: 'demo.txt'

这些导致程序在运行过程中出现异常中断和退出的错误,我们统称为异常。正常情况下,异常都不会被程序处理,而是以错误信息的形式展现出来。

异常有很多种类型,Python内置了几十种常见的异常,就在builtins模块内,它们无需特别导入,就可以直接使用。需要注意的是,所有的异常都是异常类,首字母是大写的!

在发生异常的时候,Python会打印出异常信息,信息的前面部分显示了异常发生的上下文环境,并以调用栈的形式显示具体信息。异常类型作为信息的一部分也会被打印出来,例如ZeroDivisionError,TypeError。

>>> 1/0
Traceback (most recent call last):
  File "", line 1, in 
ZeroDivisionError: integer division or modulo by zero
>>>
>>>
>>> 10 + "1"
Traceback (most recent call last):
  File "", line 1, in 
TypeError: unsupported operand type(s) for +: 'int' and 'str'

正常情况下,我们都不需要去记住 Python 到底内置了哪些错误和异常类型,除非你需要去捕获它,关于捕获的内容,我会放在下一节。这一节先来认识一下 Python 中有哪些常见的错误和异常,对于新手,下面的内容大概过一下就好,不用深究,因为这些在你以后的编码中都会遇到的。

1.SyntaxError

SyntaxError,是语法错误,可能是新手在学习 Python 时最容易遇到的错误

>>> while True print('Hello world')
  File "", line 1
    while True print('Hello world')
                   ^
SyntaxError: invalid syntax

解析器会输出出现语法错误的那一行,并显示一个“箭头”,指向这行里面检测到的第一个错误。 错误是由箭头指示的位置 上面 的 token 引起的(或者至少是在这里被检测出的):在示例中,在 print()这个函数中检测到了错误,因为在它前面少了个冒号 (':') 。文件名和行号也会被输出,以便输入来自脚本文件时你能知道去哪检查。

2、TypeError

TypeError,是类型错误,也就是说将某个操作或功能应用于不合适类型的对象时引发,比如整型与字符型进行加减法

>>> a = 10
>>> b = "1"
>>>
>>> a-b
Traceback (most recent call last):
  File "", line 1, in 
TypeError: unsupported operand type(s) for -: 'int' and 'str'

3、IndexError

IndexError,是指索引出现了错误,比如最常见下标索引超出了序列边界

>>> alist = [0,1,2]
>>> alist[5]
Traceback (most recent call last):
  File "", line 1, in 
IndexError: list index out of range

4、KeyError

KeyError是关键字错误,这个异常主要发生在字典中,比如当用户试图访问一个字典中不存在的键时会被引发。

>>> profile = {"name": "王炳明"}
>>> profile["age"]
Traceback (most recent call last):
  File "", line 1, in 
KeyError: 'age'

5、ValueError

ValueError为值错误,当用户传入一个调用者不期望的值时会引发,即使这个值的类型是正确的,比如想获取一个列表中某个不存在值的索引。

>>> int("1")
1
>>> int("a")
Traceback (most recent call last):
  File "", line 1, in 
ValueError: invalid literal for int() with base 10: 'a'

6、AttributeError

AttributeError是属性错误,当用户试图访问一个对象不存在的属性时会引发。

比如字典有get方法,而列表却没有,所以对一个列表对象调用该方法就会引发该异常。

>>> alist = [0,1,2]
>>> alist.get(0)
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: 'list' object has no attribute 'get'

7、NameError

NameError是指变量名称发生错误,比如用户试图调用一个还未被赋值或初始化的变量时会被触发。

>>> name
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'name' is not defined

8、IOError

IOError 为打开文件错误,当用户试图以读取方式打开一个不存在的文件时引发。

>>> fb = open('demo.txt')
Traceback (most recent call last):
  File "", line 1, in 
IOError: [Errno 2] No such file or directory: 'demo.txt'

9、StopIteration

StopIteration为迭代器错误,当访问至迭代器最后一个值时仍然继续访问,就会引发这种异常,提醒用户迭代器中已经没有值可供访问了。

>>> alist = range(2)
>>> agen = iter(alist)
>>> next(agen)
0
>>> next(agen)
1
>>> next(agen)
Traceback (most recent call last):
  File "", line 1, in 
StopIteration

10、AssertionError

AssertionError 为断言错误,当用户利用断言语句检测异常时,如果断言语句检测的表达式为假,则会引发这种异常。

>>> alist = [0,1,2]
>>> assert isinstance(alist, list)
>>> assert isinstance(alist, dict)
Traceback (most recent call last):
  File "", line 1, in 
AssertionError

11. IndentationError

Python 是一门严格缩进的语言,如果缩进有问题,就会导致解释器解析异常,抛出 IndentationError

>>> while True:
... print("hello")
  File "", line 2
    print("hello")
        ^
IndentationError: expected an indented block

12. ImportError

当你在使用 import 导包的时候,如果因为包名错误或者路径不对、包未安装,都会抛出 ImportError

>>> import oss
Traceback (most recent call last):
  File "", line 1, in 
ImportError: No module named oss

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    58

    文章

    4885

    浏览量

    90314
  • 异常
    +关注

    关注

    0

    文章

    23

    浏览量

    9527
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    烧录芯片总失败?五大常见错误与解决方法

    产线常见 Verify Error 校验错误,多非芯片本身问题,而是五大典型因素导致:烧录座接触不良、电源供电不稳、信号与时序异常、加密保护误触、静电与温度影响。按物理连接、电气环境、软件配置逐级排查,规范耗材更换与产线防护,可
    的头像 发表于 02-24 15:37 1360次阅读

    机器学习和深度学习中需避免的 7 个常见错误与局限性

    无论你是刚入门还是已经从事人工智能模型相关工作一段时间,机器学习和深度学习中都存在一些我们需要时刻关注并铭记的常见错误。如果对这些错误置之不理,日后可能会引发诸多麻烦!只要我们密切关注数据、模型架构
    的头像 发表于 01-07 15:37 351次阅读
    机器学习和深度学习中需避免的 7 个<b class='flag-5'>常见</b><b class='flag-5'>错误</b>与局限性

    检查函数返回值的错误异常处理方法

    检查函数返回值:这是最常见也最基本的错误处理和异常处理方法,就是在调用一个函数后,检查其返回值是否符合预期或是否表示出错或失败。如果出错或失败,则根据返回值或者全局变量errno(定义在
    发表于 12-11 06:48

    API接口调用中的网络异常及解决方案

    一、连接类异常:“无法建立通信链路” 连接类异常的核心问题是 客户端与API服务器之间无法成功建立TCP连接 ,导致调用请求“发不出去”,是网络层最基础的异常类型。 1. 常见场景与原
    的头像 发表于 11-17 09:22 978次阅读

    电能质量在线监测装置时钟模块自动同步异常常见类型有哪些?

    : 一、PTP 同步(IEEE 1588)常见异常类型(适配 A 级装置) PTP 同步依赖高精度链路与主从时钟协同,异常多源于 “链路中断、主时钟失效或参数不匹配”,典型类型如下: 1. 链路类
    的头像 发表于 10-22 14:15 808次阅读

    Cortex-M0+处理器的HardFault错误介绍

    在ARM处理器中,如果一个程序产生了错误并且被处理器检测到,就会产生错误异常。Cortex-M0+处理器只有一种异常用以处理错误:HardF
    的头像 发表于 10-14 10:50 3648次阅读
    Cortex-M0+处理器的HardFault<b class='flag-5'>错误</b>介绍

    分析负载特性时,有哪些常见错误或误区?

    分析负载特性时,很多人会因 “想当然套用经验”“忽略实际场景细节” 或 “混淆概念” 导致判断偏差,进而让报警阈值调整失效(如误报、漏报)。以下是 6 个最常见错误 / 误区,附错误表现、危害
    的头像 发表于 10-10 17:03 1098次阅读

    知晓常见的铜缆安装错误并避免

    铜缆(如网线、电话线等)是网络和数据传输的基础设施,但在安装过程中,由于操作不当或忽视细节,常出现各种错误,导致网络性能下降甚至故障。以下是常见的铜缆安装错误及预防措施,帮助您避免踩坑: 一、线缆
    的头像 发表于 09-16 10:42 1297次阅读

    国巨贴片电容的电压标识有哪些常见错误

    国巨贴片电容的电压标识在识别和使用过程中可能存在一些常见错误,这些错误可能源于标识本身的模糊性、不同系列产品的差异、对标识规则的误解,或使用环境的影响。以下是具体分析: 一、标识模糊或缺失导致的
    的头像 发表于 08-28 16:51 946次阅读

    NCS放大器DAD3350常见错误码及解决方案

    NCS放大器DAD3350在工业应用中可能出现的错误码及解决方案如下: ‌ 一、常见错误码及原因 ‌ ‌ 过载报警(如LV低电压报警、OVC过电流报警) ‌ ‌ 原因 ‌: 电源电压异常
    的头像 发表于 07-12 09:41 1150次阅读

    电商API常见错误排查指南:避免集成陷阱

      在电商平台开发中,API集成是连接系统、实现数据交换的核心环节。然而,许多开发者在集成过程中常遇到错误,导致项目延迟、数据丢失或用户体验下降。本文将逐步介绍常见错误类型、排查方法以及预防策略
    的头像 发表于 07-11 14:21 2299次阅读
    电商API<b class='flag-5'>常见</b><b class='flag-5'>错误</b>排查指南:避免集成陷阱

    高温电阻率测试中的5个常见错误及规避方法

    测试结果出现偏差。下面为你详细剖析高温电阻率测试中的 5 个常见错误,并提供有效的规避方法。​ 一、样品制备不当​ 常见错误​ 样品的形状、尺寸和表面状态对高温电阻率测试结果影响显著。
    的头像 发表于 06-09 13:07 1045次阅读
    高温电阻率测试中的5个<b class='flag-5'>常见</b><b class='flag-5'>错误</b>及规避方法

    PLC指示灯异常闪烁原因及维修

    异常闪烁的常见原因,并提供针对性的维修方案,帮助技术人员快速定位问题,保障生产连续性。 一、PLC指示灯异常闪烁的典型表现与分类 PLC面板通常配备电源(PWR)、运行(RUN)、错误
    的头像 发表于 06-07 16:13 1w次阅读
    PLC指示灯<b class='flag-5'>异常</b>闪烁原因及维修

    ups电源—常见UPS电源警报声异常分析

    UPS电源(不间断电源)警报声是提示ups电源系统状态的重要信号。当UPS电源发出异常警报声时,往往意味着ups电源存在某种故障或异常情况。下面聊一下几种常见的UPS电源警报声异常情况
    的头像 发表于 06-04 18:28 2897次阅读
    ups电源—<b class='flag-5'>常见</b>UPS电源警报声<b class='flag-5'>异常</b>分析

    原理图和PCB设计中的常见错误

    在电子设计领域,原理图和PCB设计是产品开发的基石,但设计过程中难免遇到各种问题,若不及时排查可能影响电路板的性能及可靠性,本文将列出原理图和PCB设计中的常见错误,整理成一份实用的速查清单,以供参考。
    的头像 发表于 05-15 14:34 1419次阅读