程序在运行时,如果Python 解释器
遇到 到一个错误,会停止程序的执行,并且提示一些错误信息,这就是异常
异常是因为程序出现了错误,而在正常控制流以外采取的行为,这个行为又分为两个阶段:
try:
n = int(input('number: ')) # 没有输入任何值,回车,产生ValueError异常
print(n)
except ValueError:
print('无效的输入') # 当异常ValueError发生时,执行print()
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')
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)
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子句
一般放在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')