📅  最后修改于: 2023-12-03 15:28:55.634000             🧑  作者: Mango
在编写 Python 程序时,我们经常会遇到错误和异常。有时我们需要在代码中专门处理这些异常,以避免程序崩溃或表现不符合预期。然而,有些异常是预期的,它们并不意味着程序出现了错误。这些异常被称为 “预期的异常”。
在 Python 中,我们可以使用 try-except
构造来处理异常。该结构允许我们捕获异常并执行相应的操作。然而,我们通常不需要处理预期的异常,因为它们是可预测的并且常常是程序的正常运行的一部分。
下面是一些常见的预期异常和它们的用途:
KeyboardInterrupt
异常在用户按下 “CTRL-C” 中断程序时被抛出。在这种情况下,我们可能需要处理这个异常并清理程序状态,以确保程序正确地停止。
例如,以下程序在收到 KeyboardInterrupt
异常时会打印一条消息并退出:
try:
while True:
pass
except KeyboardInterrupt:
print('Program stopped by user')
StopIteration
异常被用来指示迭代已经到达了结束状态。在迭代器(iterator)的最后一个元素已经被消耗时,该异常就会被抛出。
例如,以下程序演示了如何在处理一个列表时使用该异常:
lst = [1, 2, 3]
it = iter(lst)
try:
while True:
num = next(it)
print(num)
except StopIteration:
print('List has no more elements')
EOFError
异常被抛出当一个输入操作已经到达 “文件结束 (End of File)” 的标志。例如,当在命令行中输入 input()
并按下 “CTRL-D”(UNIX 系统中)或者 “CTRL-Z”(Windows 系统中)时,该异常就会被抛出。
例如,以下程序演示了如何处理该异常和读取从标准输入获取的数据:
try:
while True:
value = input('Enter a value: ')
print(f'You entered: {value}')
except EOFError:
print('End of input')
SystemExit
异常被用来指示程序应该退出。这个异常可以在调用 Python 解释器时传递给它的 -c
命令行选项,将执行给定的 Python 代码并使用 sys.exit()
函数退出程序。
例如,以下命令将传递一个退出状态码为 1 的 SystemExit
异常:
$ python -c 'import sys; sys.exit(1)'
$ echo $?
1
通过使用 sys.exit()
函数,我们可以控制程序以指定的状态码退出。程序员可以使用该异常来强制终止程序。
在 Python 中,我们可以使用预期异常来管理程序的正常运行,同时避免不必要的异常处理和错误报告。了解这些异常和它们的用途可以帮助我们编写更加鲁棒的程序。