gpt4 book ai didi

python - Python 中的 SyntaxError 不一致?

转载 作者:太空狗 更新时间:2023-10-29 17:05:10 26 4
gpt4 key购买 nike

考虑这两个片段:

try:
a+a=a
except SyntaxError:
print "first exception caught"

.

try:
eval("a+a=a")
except SyntaxError:
print "second exception caught"

在第二种情况下,“second exception ..”语句被打印出来(捕获到异常),而在第一个情况下则没有。

第一个异常(我们称之为“SyntaxError1”)与第二个异常(“SyntaxError2”)有什么不同吗?

有什么方法可以捕获 SyntaxError1(从而抑制编译时错误)?在 eval 中包装大块代码并不令人满意 ;)

最佳答案

在第一种情况下,编译器引发了异常,编译器在 try/except 结构甚至 存在 之前运行(因为编译器本身会在解析后立即设置它)。在第二种情况下,编译器运行两次 - 当编译器作为 eval 的一部分运行时会引发异常,编译器的第一次运行之后已经设置 try/except

因此,要以某种方式拦截语法错误,您必须安排编译器运行两次——eval 是一种方式,显式 compile 内置-在调用另一个函数时,import 非常方便(在将代码写入另一个文件之后),execexecfile 还有其他可能性。但是无论你怎么做,只有在编译器第一次运行以设置你需要的 try/except block 之后,才能捕获语法错误!

关于python - Python 中的 SyntaxError 不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1856408/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com