python标准异常总结:http://bbs.fishc.com/forum.php?mod=viewthread&tid=45814&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403
1.异常检测与处理
1.try-except语句
try:
检测范围
except Exception[as reason]:
出现异常(Exception)后的处理代码
一但出现异常,后面的语句将不会执行。一个try后面可以跟多个except。
try:
sum = 1 + '1'
f = open('ab.txt')
print(f.read())
f.close()
except OSError as reason1: #reason1是一个变量名,表示出错的原因
print('文件出错!\n错误的原因是:' + str(reason1))
except TypeError as reason2:
print('类型出错!\n错误的原理是:' + str(reason2))
except: #如果不知道是什么异常,就可以这样写,必须放到所有except最后,但不推荐这样做!
print('出错了!')
也可以把多种异常放在一起:
except (OSError,TypeError):
print('出错啦!')
2.try-finally语句
try:
检测范围
except Exception[as reason]:
出现异常后的处理代码
finally:
无论如何都要被执行的代码
下面的例子要保证无论出现什么异常,文件打开后要正常关闭。
try:
f = open('ab.txt','r')
print(f.read())
sum = 1 + '1'
except (OSError,TypeError):
print('error!')
finally:
f.close()
print('文件正确关闭。')
3.raise语句
可以引发一个异常。
>>> 1/0
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
1/0
ZeroDivisionError: division by zero
>>> raise ZeroDivisionError('除数不能为0')
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
raise ZeroDivisionError('除数不能为0')
ZeroDivisionError: 除数不能为0
2. else语句
1.要么怎样,要么不怎样
if *:
**
else:
**
2.干完了能怎样,干不完别想怎样
while ***: #for语句也是同样的道理
***
else:
***
3.没有问题,那就干吧
try:
print(int('abc'))
except ValueError as reason:
print('error' + str(reason))
else:
print('没问题') #如果没有异常就输出,有异常就不输出了。
3.with语句
with语句会自动帮你关闭文件,不必再用finally语句了。
try:
with open('data.txt','w') as f:
for i in f:
print(i)
except OSError:
print('error!')