捕获NameError和错误处理
我正在写一个函数,这个函数会接收用户的输入:
def func(input):
我加了try和except来确保输入的类型是我想要的。不过,当我输入testInput时,它会报一个NameError,而不是像我预期的那样处理"testInput"。
我明白这是为什么,因为它把testInput当成了一个变量名,而知道"testInput"是一个字符串。
有没有什么聪明的方法可以捕捉到这个错误呢?
1 个回答
5
NameError 通常是因为 变量名未定义。如果你用 testInput
作为变量名,也就是不加引号使用它,你必须先定义这个变量。你可以试试这样:
testInput = "my_input_test"
func(testInput)
或者你也可以直接把字符串本身作为参数使用:
func("my_input_test")
有时候,打错字也会导致变量名未定义,从而出现 NameError
。
听起来你的 try ... except
语句是在函数内部,但错误发生在函数体执行之前,所以你无法在函数体内捕获到这个错误。为了演示如何捕获这个错误,你可以试试以下代码。
# !!! DEMO ONLY. DON'T DO THIS.
try:
func(testInput)
except NameError:
# Your code here
重要:NameError 通常意味着 你需要修正你的变量/函数/类的名称。使用 try ... except
来捕获这些错误通常是不好的做法,会导致代码混乱且难以使用。