一、异常的定义:
程序在运行时,如果
Python 解释器
遇到 到一个错误,会停止程序的执行,并且提示一些错误信息,这就是异常-
异常是因为程序出现了错误,而在正常控制流以外采取的行为,这个行为又分为两个阶段:
- 首先是引起异常发生的错误
- 然后是检测(和采取可能的措施)阶段
二、异常的语法格式:
- try-except 语句
- 注意:当捕捉到异常后,会继续执行后续代码
try:
n = int(input('number: ')) # 没有输入任何值,回车,产生ValueError异常
print(n)
except ValueError:
print('无效的输入') # 当异常ValueError发生时,执行print()
关键词:except
- 使用多个except的try语句,实现异常参数
- 使用as进行异常别名:except ValueError as e
- 还可以使用as的别名直接打印异常信息内容
try:
n = int(input('number: '))
print(n)
except ValueError as e: # 当异常ValueError发生时,将异常信息赋值给变量e
print('无效的输入', e) # print(), 打印异常信息
except KeyboardInterrupt:
print('\nBye-bye')
except EOFError:
print('\nBye-bye')
- 多个异常使用同一种处理方式:except (Ex1, Ex2,......):
- 使用except Exception来处理兜底异常:
try:
n = int(input('number: '))
print(n)
except ValueError as e:
print('无效的输入', e)
except (KeyboardInterrupt, EOFError): # 使用except捕获多个异常
print('\nBye-bye')
except Exception as e: # 兜底方案
print(e)
关键词:else
- 在
try范围
中没有异常被检测到时,执行else子句
- 在
else范围
中的任何代码运行前,try
中的所有代码必须完全成功
# else子句的使用
try: # 有可能发生异常的代码块
n = int(input('number: '))
except ValueError as e: # 当异常ValueError发生时,将异常信息赋值给变量e
print('无效的输入', e) # print(), 打印异常信息
except (KeyboardInterrupt, EOFError):
print('\nBye-bye')
else: # 当不发生异常时,要执行的代码块
print(n)
关键词:finally
-
finally子句
是 无论异常是否发生,是否捕捉都会执行的一段代码 -
finally子句
一般放在try子句
的最后 - 一般在关闭资源的场景会使用,例如文件资源,可以保证文件总是能正常的关闭
# finally子句的使用
try: # 有可能发生异常的代码块
n = int(input('number: '))
except ValueError as e: # 当异常ValueError发生时,将异常信息赋值给变量e
print('无效的输入', e) # print(), 打印异常信息
except (KeyboardInterrupt, EOFError):
print('\nBye-bye')
exit() # 退出程序
else: # 当不发生异常时,要执行的代码块
print(n)
finally: # 不管异常是否发生都会执行代码块
print('Done')