版权声明:转载请注明出处 https://blog.csdn.net/nanhuaibeian/article/details/85550822
1. 异常类型
- AssertionError:断言语句失败
# AssertionError:断言语句失败,一般是在测试程序时置入检查点
my_list = ['love']
my_list.pop()
assert len(my_list) >0
Traceback (most recent call last):
File "<input>", line 1, in <module>
AssertionError
# AttributeError:尝试访问未知的对象属性,访问不存在时抛出的异常
- AttributeError:尝试访问未知的对象属性
Traceback (most recent call last):
File "<input>", line 1, in <module>
AttributeError: 'list' object has no attribute 'dog'
- IndexError:索引超出序列的范围
my_list=[1,2,3]
my_list[3]
#抛出的异常
Traceback (most recent call last):
File "<input>", line 1, in <module>
IndexError: list index out of range
- KeyError:字典中查找一个不存在的关键字
my_dict = {'one':1,'two':2,'three':3}
my_dict['four']
#抛出的异常:
Traceback (most recent call last):
File "<input>", line 1, in <module>
KeyError: 'four'
- NameError:尝试访问一个不存在的变量
# NameError:尝试访问一个不存在的变量时,抛出的异常
Traceback (most recent call last):
File "<input>", line 1, in <module>
NameError: name 'c' is not defined
- OSError:操作系统产生的异常
# OSError:操作系统产生的异常,也称为FileNotFoundError
FileNotFoundError: [Errno 2]
- SyntaxError:Python的语法错误
# SyntaxError:Python的语法错误
SyntaxError: invalidsyntax
- ZeroDivisionError:除数为零
- TypeError:不同类型间的无效操作
1+'2'
#抛出的异常
TypeError: unsupported operand type(s) for +: 'int' and 'str'
2. 异常捕获
- try-except语句
#格式
try:
检测范围
except Exception[as reason]:
出现异常后的处理代码
#示例
try:
sum1 = 1+ '1'
f = open('none.txt')
print(f.read())
f.close()
except OSError as reason:
print('文件出错T_T\n出错的原因是:' + str(reason))
# 对多个异常统一处理
except(OSError,TypeError) :
print('文件出错T_T')
# 当无法确定对哪一类异常进行处理时,只是希望在try语句里一旦出现任何异常,给用户一个看得懂的提醒
...
except:
print('出错了')
...
# try语句里一旦出下异常,剩下的语句将不会执行
- try-finally 语句
# 如果try语句中没有出现错误,则语句会跳过except语句块执行finally语句块中的内容,若出现异常,则执行except然后执行finally
try:
f = open('不存在的文档')
print(f.read())
sum = 1 + '1'
except:
print('出错了!T_T')
# finally 语句块中的内容是无论如何都要执行的
finally:
f.close()
3. 丰富的else语句
else语句不仅能和if语句搭配,而且也能和for语句或者while语句搭配
# 求用户输入的数的最大约数,若是素数则提醒用户
def showMaxFactor(num):
# 地板除法:两个整数的除法仍然是整数:
count = num // 2
while count >1:
if num % count == 0:
print('%d 最大的约数是 %d' % (num,count))
break
count -=1
# 如果没有遇到合适的条件,则执行else的语句内容
else:
print('%d 是素数!' %num)
num = int(input('请输入一个数:'))
showMaxFactor(num)
# else 语句可以与异常搭配使用,如果try语句中没有异常,则执行else中语句
try:
a = 1
except ValueError as reason:
print('出错了!' + str(reason))
else:
print('没有任何异常')
4. 简洁的with语句
# 对文件操作使用with语句,不用担心出现文件打开了忘记关闭的问题(with会自动帮助关闭文件)
try:
with open('文本.txt','r',encoding='UTF-8') as f:
for each_line in f:
print(each_line)
except OSError as reason:
print("出错了T_T\n出错的原因是:" + str(reason))