捕获NameError和错误处理

时间:2011-02-26 15:20:44

标签: python error-handling nameerror

我正在编写一个接受用户输入的函数:

def func(input):

我放入try和excepts以确保输入是我想要的类型。但是,当我输入testInput时,它会抛出NameError vs“testInput”。

我理解为什么因为它认为testInput是一个变量名,而它知道“testInput”是一个字符串。

是否有智能方法来捕获此错误?

1 个答案:

答案 0 :(得分: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

重要:NameErrors通常表示您需要修复变量/函数/类名称。使用try ... except来捕获它们通常是一种不好的做法,会导致代码混乱和无法使用。