2014-06-30 29 views
-3

我写了一小段代码,它不会排除可能抛出的错误。下面的代码:为什么不是我的代码除了错误?

def println(stringint): 
    try: 
     print stringint 
    except (SyntaxError, NameError): 
     print "Invalid format." 

我跑从Python解释器这样的代码,也只有这样的:

>>> import pcl 
>>> pcl.println("Hello") 

为什么没有被除外的错误?我怎样才能发现错误?

+2

似乎没有错。它为什么要捕获任何错误? – sshashank124

+0

你想要什么行为? –

+0

您的代码中存在缩进(语法)错误! –

回答

3

与语法有关的那些错误是分析级错误,这意味着错误发生在之前特定的代码被解释。

地图无法同类型误差的以下:

print("Hello) # Note the missing '"' 

print(4/0)  # Syntactically correct, but obviously an error. 

因此,语法错误不能由try -- except块处理。

查看此答案的更多详细信息:SyntaxError inconsistency in Python?

0

您的代码正常工作,"Hello"既不会引发EOLError也不会引发NameError,因为引号是关闭的,并且它是一个字符串。

+0

好吧,我把NameError放在了只是为了防止用户输入类似'pcl.println(hello)'的东西'。 –

+1

@SomeGuy然后NameError会在您的函数调用之外引发。 – Kos

+0

函数参数在函数调用之前进行评估。由于'pcl.println()'永远不会被调用(假设范围内没有名为'hello'的变量),所以你不能从''pcl.println()'内部的'*里面'捕获'pcl.println(hello)'。 – kindall

相关问题