> 文档中心 > Python零基础入门篇 - 41 - Python中内置异常类型

Python零基础入门篇 - 41 - Python中内置异常类型


前言
✌ 作者简介:渴望力量的哈士奇,大家可以叫我 🐶哈士奇🐶 。(我真的养了一只哈士奇)
📑 个人主页:渴望力量的哈士奇主页
📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
🔥 如果感觉博主的文章还不错的话,还请不吝👍关注、点赞、收藏三连支持👍一下博主哦
💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬

📕系列专栏::
               👍 Python全栈系列 - [更新中]    ➡️➡️➡️ 【 本文在该系列】
               👋 网安之路系列
​                       🍋 网安之路踩坑篇
​                       🍋 网安知识扫盲篇
​                       🍋 Vulhub 漏洞复现篇
​                       🍋 Shell脚本编程篇
​                       🍋 Web攻防篇  ➡️➡️➡️ 2021年9月3日停止更新,转战先知等安全社区
​                       🍋 渗透工具使用集锦  ➡️➡️➡️ 2021年9月3日停止更新,转战先知等安全社区
​                ⭐️ 点点点工程师系列
​                       🍹 测试神器 - Charles 篇
​                       🍹 测试神器 - Fiddler 篇
​                       🍹 测试神器 - Jmeter 篇
​                       🍹 自动化 - RobotFrameWork 系列
​                       🍹 自动化 - 基于 JAVA 实现的WEB端UI自动化
                       🍹 自动化 - 基于 MonkeyRunner 实现的APP端UI自动化
​                🤗 2019年之前学习Python留下的乱七八糟系列

🎉🎉欢迎持续关注🎉🎉

Python零基础入门篇 - 41 - Python中内置异常类型 Python零基础入门篇 - 41 - Python中内置异常类型

上一章节我们学习了如何捕获异常,并且针对 通用异常 与 具体异常 的捕获进行了详细的讲解。今天给大家讲解一下 Python 中常用的内置异常类型的捕获,希望通过对它们的了解,可以帮助我们更好的使用并捕获异常。

该章节只有一个目的,那就是了解常用的异常类型。

异常类型集合

异常名称 说明
Exception 通用异常类型(基类,所有异常类型的父类)
ZeroDivisionError 不能整除0
AttributeError 对象没有这个属性(一个实例化对象没有对应的属性和方法的时候就会抛出该异常)
IOError 输入输出操作失败(文件读写的时候会经常遇到)
IndexError 没有当前的索引(如果一个索引值不存在,就会抛出这个错误)
KeyError 没有这个键值(如果 key 不存在,就会报这个错误)
NameError 没有这个变量(如果使用的变量名还没有定义,就会抛出该异常)
SyntaxError Python语法错误(Python 语法书写有误就会抛出该异常)
SystemError 解释器的系统错误(如果 Python 解释器出现了系统错误就会抛出该异常-很少见的)
ValueError 传入的参数错误(函数传参错误的时候就会报这个错误)
TypeError 类型错误(在函数中传参有误的时候就会抛出这样的异常)

接下来 我们看一个 AttributeError 的小案例

class Test(object):    passtest = Test()t.name# 没有定义 name 这个变量,直接调用。# >>> 执行结果如下:# >>> AttributeError: 'Test' object has no attribute 'name'# *********************************************************# 捕获 ` AttributeError ` 异常如下:class Test(object):    passtest = Test()try:    test.nameexcept AttributeError as e:    print(e)    # >>> 执行结果如下:# >>> 'Test' object has no attribute 'name'

再看一个 KeyError 的演示案例:

key_error = {'name': 'Neo'}print(key_error['age'])# >>> 执行结果如下:# >>> KeyError: 'age'# *********************************************************# 捕获 ` KeyError ` 异常如下:key_error = {'name': 'Neo'}try:    key_error['age']except KeyError as e:    print(e, '对应的键值不存在!')    # >>> 执行结果如下:# >>> 'age' 对应的键值不存在!

继续,再看一个 IndexError 的示例:

list_error = [1, 2, 3, 4]print(list_error[5])# >>> 执行结果如下:# >>> IndexError: list index out of range# *********************************************************# 捕获 ` IndexError ` 异常如下:list_error = [1, 2, 3, 4]try:    list_error[5]except IndexError as e:    print('list_error[5]:', e)# >>> 执行结果如下:# >>> list_error[5]: list index out of range    

再继续,演示一个 ValueError 的示例:

name = 'Neo'int(name)# >>> 执行结果如下:# >>> ValueError: invalid literal for int() with base 10: 'Neo'# *********************************************************# 捕获 ` ValueError ` 异常如下:name = 'Neo'try:    int(name)except ValueError as e:    print(e)# >>> 执行结果如下:# >>> invalid literal for int() with base 10: 'Neo'

再再继续看一个 TypeError 的演示栗子:

def test(a):    passtest()# >>> 执行结果如下:# >>> TypeError: test() missing 1 required positional argument: 'a'   【缺少传入参数】# *********************************************************# 捕获 ` TypeError ` 异常如下:def test(a):    passtry:    test()except TypeError as e:    print(e)    # >>> 执行结果如下:# >>> test() missing 1 required positional argument: 'a'

其实在我们在 Python 中存在着很多的异常类型,在以后的学习与工作中会遇到他们。可能常用的还是 Exception , 但是尽量的去使用我们确认的错误类型,这样会更好一些。