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 中常用的内置异常类型的捕获,希望通过对它们的了解,可以帮助我们更好的使用并捕获异常。
该章节只有一个目的,那就是了解常用的异常类型。
异常类型集合
异常名称 | 说明 |
---|---|
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
, 但是尽量的去使用我们确认的错误类型,这样会更好一些。