程序在运行的时候,如果python解释器遇到非语法错误时,会停止程序的执行,并且抛出一些错误的信息进行提示,这就是异常。
try:
正常的操作
......................
except:
发生异常,执行这块代码
......................
else:
如果没有异常执行这块代码
方式try-except语句捕获所有发生的异常。但这不是一个很好的方式,我们不能通过该程序识别出具体的异常信息。因为它捕获所有的异常,常用于函数最外层进行捕捉不确定异常。
try:
正常的操作
......................
except Exception0:
发生Exception0异常,执行这块代码
except(Exception1[, Exception2[,...ExceptionN]]):
发生以上多个异常中的一个,执行这块代码
......................
else:
如果没有异常执行这块代码
try:
正常的操作
......................
finally:
退出try时总会执行的代码
raise
# 假设打开testfile.txt文件没有可写权限
try:
demo_file = open("testfile.txt", "w")
except:
print "Error: 没有找到文件或读取文件失败"
# 假设打开testfile.txt文件没有可写权限
try:
demo_file = open("demo", "w")
demo_file.write("这是一个测试文件,用于测试异常!!")
finally:
print "Error: 没有找到文件或读取文件失败"
# 假设打开testfile.txt文件没有可写权限
try:
demo_file = open("testfile.txt", "w")
try:
demo_file.write("这是一个测试文件,用于测试异常!!")
finally:
print "关闭文件"
demo_file.close()
except IOError:
print "Error: 没有找到文件或读取文件失败"
当在try块中抛出一个异常,立即执行finally块代码。
finally块中的所有语句执行后,异常被再次触发,并执行except块代码。
在不确定异常是哪个的情况下,常用的except的异常有:Exception、BaseException。
try:
int('a')
except BaseException as e:
print(e)
# 打印出来的信息为:
# invalid literal for int() with base 10: 'a'