前言:
✌ 作者简介:渴望力量的哈士奇,大家可以叫我 哈士奇 。(我真的养了一只哈士奇)
个人主页:渴望力量的哈士奇主页
如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步
如果感觉博主的文章还不错的话,还请不吝关注、点赞、收藏
三连支持一下博主哦
人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。
系列专栏::
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):
pass
test = Test()
t.name # 没有定义 name 这个变量,直接调用。
# >>> 执行结果如下:
# >>> AttributeError: 'Test' object has no attribute 'name'
# *********************************************************
# 捕获 ` AttributeError ` 异常如下:
class Test(object):
pass
test = Test()
try:
test.name
except 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):
pass
test()
# >>> 执行结果如下:
# >>> TypeError: test() missing 1 required positional argument: 'a' 【缺少传入参数】
# *********************************************************
# 捕获 ` TypeError ` 异常如下:
def test(a):
pass
try:
test()
except TypeError as e:
print(e)
# >>> 执行结果如下:
# >>> test() missing 1 required positional argument: 'a'
其实在我们在 Python 中存在着很多的异常类型,在以后的学习与工作中会遇到他们。可能常用的还是 Exception
, 但是尽量的去使用我们确认的错误类型,这样会更好一些。