Python_11_异常处理_03_常见异常

Python 有很多异常,熟悉几个常见异常是有必要的。

11.3.1 AttributeError异常

AttributeError 异常试图访问一个类中不存在的成员(包括:成员变量、属性和成员方法)而引发的异常。

示例代码如下:

# 定义 Animal 类
class Animal(object):
    pass

a1 = Animal()

# 试图访问 Animal 类的 run() 方法
# 由于 Animal 类中没有定义 run() 方法
# 结果抛出 AttributeError 异常
a1.run()

# 试图访问 Animal 类的实例变量(或属性)age
# 结果抛出 AttributeError 异常
print(a1.age)

# 试图访问 Animal 类的类变量 weight
# 结果抛出 AttributeError 异常
print(Animal.weight)

执行结果:

Traceback (most recent call last):
  File "Exception.py", line 12, in <module>
    a1.run()
AttributeError: 'Animal' object has no attribute 'run'

Traceback (most recent call last):
  File "Exception.py", line 18, in <module>
    print(a1.age)
AttributeError: 'Animal' object has no attribute 'age'

Traceback (most recent call last):
  File "Exception.py", line 22, in <module>
    print(Animal.weight)
AttributeError: type object 'Animal' has no attribute 'weight'

11.3.2 OSError异常

OSError 是操作系统相关异常。

Pyhon 3.3 版本后 IOError(输入输出异常)也并入到 OSError 异常,所以输入输出异常也属于 OSError 异常。

例如 “未找到文件” 或 “磁盘己满” 异常。
示例代码如下:

# 是打开当前目录下的 abc.txt 文件
# 由于不存在该文件,所以抛出 FileNotFoundError 异常
# FileNotFoundError 属于 OSError 异常
f = open("abc.txt")

执行结果:

Traceback (most recent call last):
  File "Exception.py", line 27, in <module>
    f = open("abc.txt")
FileNotFoundError: [Errno 2] No such file or directory: 'abc.txt'

11.3.3 IndexError异常

IndexError 异常是访问序列元素时,下标索引超出取值范围所引发的异常。

示例代码如下:

# 代码 code_list[4]试图访问 code_list 列表的第 5 个元素
# 由于 code_list 列表最多只有 4 个元素,所以会引发 IndexError 异常
code_list = [125, 56, 89, 36]
print(code_list[4])

执行结果:

Traceback (most recent call last):
  File "Exception.py", line 35, in <module>
    print(code_list[4])
IndexError: list index out of range

11.3.4 KeyError异常

KeyError 异常是试图访问字典里不存在的键时而引发的异常。

示例代码如下:

dict[104]

执行结果:

Traceback (most recent call last):
Fi le "<pyshell#14>", l ine 1, in <module>
dict1[104]
KeyError 104

试图访问字典 dict1 中键为 104 的值,104 键在字典 dict1 中不存在,所以会引发 KeyError 异常。

11.3.5 NameError异常

NameError 是试图使用一个不存在的变量而引发的异常。

示例代码如下:

value1
a = value1

执行结果:

NameError: name 'value1' is not defined

读取 value1 变量值,由于之前没有创建过 value1 ,所以会引发 NameError

11.3.6 TypeError异常

TypeError 是试图传入变量类型与要求的不符合时而引发的异常。

示例代码如下:

i = "2"
print(5 / i)

执行结果:

TypeError: unsupported operand type(s) for /: 'int' and 'str'

代码 (5 / i) 表达式进行除法计算,需要 i 变量是一个数字类型。
然而传入的却是一个字符串,所以引发 TypeError 异常。

11.3.7 ValueError异常

ValueError 异常是由于传入一个无效的参数值而引发的异常。

示例代码如下:

i = "QWE"
print(5 / int(i))

执行结果:

ValueError: invalid literal for int() with base 10: 'QWE'

代码 (5 / int(i))表达式进行除法计算,需要传入的变量 i 是能够使用 int() 函 数转换为数字的参数。

然而传入的字符串 “QWE” 不能转换为数字,所以引发了 ValueError 异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值