一 .异常的认知
1.简单地说,异常是指程序运行时引发的错误,引发错误的原因有很多,例如除零、下标越界、文件不存在、网络异常、类型错误、名字错误、字典键错误、磁盘空间不足,等等。
2.如果这些错误得不到正确的处理将会导致程序终止运行,而合理地使用异常处理结果可以使得程序更加健壮,具有更强的容错性,不会因为用户不小心的错误输入或其他运行时原因而造成程序终止。
3.也可以使用异常处理结构为用户提供更加友好的提示。
4.程序出现异常或错误之后是否能够调试程序并快速定位和解决存在的问题也是程序员综合水平和能力的重要体现方式之一。
二. 异常处理的作用
提高程序的健壮性和容错性
把晦涩难懂的错误提示转换为友好提示显示给最终用户
while True:
//这里必须输入整数
x = input('Please input:')
try:
x = int(x)
print('You have input {0}'.format(x))
break
except Exception as e:
print('Error.')
如果try范围内捕获了异常,就执行except块;如果try范围内没有捕获异常,就执行else块
a_list = ['China', 'America', 'England', 'France']
while True:
n = input('请输入字符串的序号')
try:
n = int(n)
print(a_list[n])
except IndexError:
print('列表元素的下标越界,请重新输入字符串的序号')
else:
break
查看多个文本文件分别有多少行
for arg in sys.argv[1:]:
try:
f = open(arg, 'r')
except IOError:
print('cannot open', arg)
else:
print(arg, 'has', len(f.readlines()), 'lines')
f.close()
带有多个except的try结构
try:
x=input('请输入被除数: ')
y=input('请输入除数: ')
z=float(x) / float(y)
except ZeroDivisionError:
print('除数不能为零')
except TypeError:
print('被除数和除数应为数值类型')
except NameError:
print('变量不存在')
else:
print(x, '/', y, '=', z)
import sys
try:
f = open('myfile.txt')
s = f.readline()
i = int(s.strip())
f.close()
except (OSError, ValueError,RuntimeError, NameError):
pass