异常处理
先做这些步骤,如果发生错误就这样处理!
引进异常处理机制来解决程序运行的错误,而不是检查算法每一步是否成功;
Python用try...except...来进行异常处理:
Try:
<body1> #先执行
Except <ErrorType1> as reason:
<body2>
Except <ErrorType2> as reason:
<body3>
Except :
<body3>
当python遇到一个try语句时,先执行try下body1的语句,没有错则执行try... Except...
后面的语句,有错的话,python在except下寻找一个符合错误的异常语句执行下面的代码。
例子1:
try:
f =open('filetxt')
print('文件内容是:')
for i in f:
print(i)
except OSError as reason:
print("错误的原因是"+ str(reason))
>>>错误的原因是[Errno 2] No such file or directory: 'filetxt'
例子2:
while True:
try: #用try...except用来捕捉valueerror错误
x = int(input('输入数字:'))
break
except ValueError as error:
print('输入错误,请重新输入' + str(error))
>>>输入数字:999
>>>输入数字:不是数字类型
输入错误,请重新输入
异常处理语句还可以使用else和finally语句:
Try:
<boby1>
Except 错误类型1:
<处理方法>
Except 错误类型2:
<处理方法2>
Except: #主要用于处理程序正常执行过程中出现的异常如语法错误、数据处理错误、从未定义的变量错误等
<处理方法3>
Else: #必须在finally之前,什么时候执行呢?当try内没有异常产生才执行else下的语句
<程序_else>
Finally: #必须在这些语句后面,finally语句无论try是否发生异常,这些代码都必须执行,
<程序_finally>#无论是否发生错误都必须执行,如清理工作场合,读一个文件无论是否有错最后还是要关闭文件
eg:
try: #监测到有异常下面的代码就不会执行,直接到对应的except语句
#int('sadf')
#sum = 1 + '1'
f =open('file.txt','w')
filess=f.write('asdsa')
print('文件内容是:')
for i in f:
print(i)
except OSError as reason:
print("错误的原因是:"+ str(reason))
except TypeError as error:
print("错误的原因是:"+ str(error))
except (OSError,TypeError): # 这样写也行的!
print("出错了!!")
except: #当不确定是哪种异常直接这样就行!(可以这么做但不推荐)
print('出错啦')
finally:#无论如何都会执行,一般用于文件操作。
filess.close()