异常的概念
在程序运行过程中,由于编码不规范或其他客观原因,可能会导致程序无法继续运行,此时就会出现异常。如果不对异常进行处理,程序可能会直接中断。为了保证程序的健壮性,引入了异常处理的概念。
读取文件异常
在读取文件时,如果文件不存在,则会引发FileNotFoundError
错误。
程序经常会遇到类似的异常情况,如果不进行处理,程序会中断并退出。为了提高程序的健壮性,可以使用异常处理机制来解决可能出现的问题。
try…except语句
try...except
语句用于处理代码运行过程中可能出现的异常。语法结构如下:
try: # 可能会出现异常的代码块 except 异常的类型: # 出现异常后的处理语句
示例:
try: f = open('test.txt', 'r') print(f.read()) except FileNotFoundError: print('文件没有找到,请检查文件名称是否正确')
try…else语句
在if
语句中,我们对else
并不陌生,它表示当条件不满足时执行的操作。在try...except...
中也一样,即如果没有捕获到异常,就执行else
中的操作。
try: num = 100 print(num) except NameError as errorMsg: print('产生错误了:%s' % errorMsg) else: print('没有捕获到异常,真高兴')
try…finally语句
try...finally...
语句用于如下情况:
如果在程序中有一段代码必须执行,无论是否发生异常,都需要执行,就可以使用finally
。例如:文件关闭、释放锁、将数据库连接返回给连接池等。
try: f = open('test.txt') try: while True: content = f.readline() if len(content) == 0: break print(content) except: # 如果在读取文件的过程中出现异常,会被捕获 # 例如按下了Ctrl+C pass finally: f.close() print('关闭文件') except: print('没有这个文件')
说明:
我们可以观察到,当触发KeyboardInterrupt
异常时,程序会退出。但在程序退出之前,finally
语句块仍然会被执行,关闭文件。