避免在Python中使用裸露的except
在Python中,键盘中断和系统退出是通过异常(即KeyboardInterrupt
和SystemExit
)传播的。因此,在Python中使用裸露的except
子句会捕获用户按下Ctrl + C等操作。
考虑以下代码。如果用户尝试退出程序,键盘中断将被except
子句捕获。这是不可取的,因为它会阻止用户实际退出程序,直到他们提供有效的输入。
while True:
try:
s = input('输入一个数字:')
x = int(s)
except:
print('不是一个数字,请重试!')
防止这种情况发生的一种方法是使用Exception
,这将确保用户不会被困住。这种方法的唯一问题是Exception
是通用的,几乎可以处理任何被抛出的异常。
while True:
try:
s = input('输入一个数字:')
x = int(s)
except Exception:
print('不是一个数字,请重试!')
处理错误的正确方式是指定您期望的错误类型。例如,在此代码示例中,ValueError
是合适的。
while True:
try:
s = input('输入一个数字:')
x = int(s)
except ValueError:
print('不是一个数字,请重试!')
作为一个经验法则,您应该只使用带有适当错误类型的except
来处理预期的失败状态。对于意外错误,让程序自然地失败并退出可能更好。