Python —— 异常处理

Python —— 错误处理

python中支持四种异常处理。

  • 默认的异常处理器
  • try...except...finally...
  • assert
  • with...as...

默认的异常处理器

s = 'hello world'
print(s[50])
print(s)
Traceback (most recent call last):
  File "D:/python异常处理.py", line 2, in <module>
    print(s[50])
IndexError: string index out of range

如果没有对错误进行任何预防,在程序执行过程中发生异常,会中断程序,调用python默认的异常处理器,并在终端输出异常信息。

这种情况下,第三行代码不会执行。

try...except...finally

s = 'hello world'
try:
    print(s[50])
except Exception:
    print("index error...")
finally:
    print("finally...")
'''
index error...
finally...
'''

except xxxx:当try中执行出现错误,如果except中捕获该种错误,则执行except中的内容。否则仍然以默认异常处理器进行处理。

finally xxxx:无论 try 中有无报错,finally中的代码始终执行。

assert

assert False, 'error...'
print("continue...")

'''
Traceback (most recent call last):
  File "D:/python异常处理.py", line 16, in <module>
    assert False, 'error...'
AssertionError: error...
'''
assert True, 'error...'
print("continue...")

'''
continue...
'''

先判断assert后边紧跟的语句是True还是False。

如果是True:继续执行后边代码。

如果是False:中断程序,调用默认的异常处理器,同时输出assert语句逗号后边的提示信息。

with...as...

with open('s1.py', 'r', encoding='utf-8') as f:
    f.read()
    print(2 / 0)

print("文件操作完成")

'''
Traceback (most recent call last):
  File "D:/python异常处理.py", line 22, in <module>
    print(2/0)
ZeroDivisionError: division by zero
'''

在文件操作中,使用完毕要调用close方法关闭。

with...as...提供一个很方便的替代方法:open打开文件后将返回的文件流对象赋值给f文件句柄,在with语句块中使用。with语句块执行完后会隐藏的自动关闭文件。

如果with语句或语句块中发生异常,会调用默认的异常处理器,但文件还是会正常关闭。

 

posted @ 2017-08-17 19:58  乖巧Clare  阅读(132)  评论(0编辑  收藏  举报