在Python中处理 TypeError 异常
TypeError 是几个标准Python异常之一。每当对不正确/不受支持的对象类型执行操作时,都会引发 TypeError 。例如,对字符串和整数值使用 +(加法)运算符将引发 TypeError。
例子
引发 TypeError 的一般原因是:
1. 两种类型之间不支持的操作:
在以下示例中,变量“geek”是一个字符串,变量“num”是一个整数。 +(加法)运算符不能在这两种类型之间使用,因此会引发 TypeError。
Python3
geek = "Geeks"
num = 4
print(geek + num + geek)
Python3
geek = "GeeksforGeeks"
print(geek())
Python3
geeky_list = ["geek", "GeeksforGeeks", "geeky", "geekgod"]
index = "1"
print(geeky_list[index])
Python3
for geek in 1234.567890:
print(geek)
Python3
geeky_list = ["Geeky", "GeeksforGeeks", "SuperGeek", "Geek"]
indices = [0, 1, "2", 3]
for i in range(len(indices)):
try:
print(geeky_list[indices[i]])
except TypeError:
print("TypeError: Check list of indices")
输出 :
TypeError: must be str, not int
2.调用不可调用的标识符:
在下面的示例代码中,变量 'geek' 是一个字符串,在此上下文中是不可调用的。由于它是在 print 语句中调用的,因此引发了 TypeError。
Python3
geek = "GeeksforGeeks"
print(geek())
输出 :
TypeError: 'str' object is not callable
3.列表索引类型不正确:
在Python中,列表索引必须始终是整数值。由于以下代码中使用的索引值是字符串,因此会引发 TypeError。
Python3
geeky_list = ["geek", "GeeksforGeeks", "geeky", "geekgod"]
index = "1"
print(geeky_list[index])
输出 :
TypeError: list indices must be integers or slices, not str
4. 遍历一个非迭代标识符:
在下面的代码中,值 1234.567890 是一个浮点数,因此它是非迭代的。强制Python对非迭代标识符进行迭代将引发 TypeError。
Python3
for geek in 1234.567890:
print(geek)
输出 :
TypeError: 'float' object is not iterable
处理类型错误
TypeErrors 主要是在程序员在对对象执行操作之前未能检查对象类型的情况下引发的。可以通过在 except 块中提及它们来专门处理它们。在下面的示例中,当发现其中一个索引的类型不正确时,程序会引发异常并进行处理。
Python3
geeky_list = ["Geeky", "GeeksforGeeks", "SuperGeek", "Geek"]
indices = [0, 1, "2", 3]
for i in range(len(indices)):
try:
print(geeky_list[indices[i]])
except TypeError:
print("TypeError: Check list of indices")
输出 :
Geeky
GeeksforGeeks
TypeError: Check list of indices
Geek