【发布时间】:2021-10-31 11:52:17
【问题描述】:
考虑这两个 sn-ps:
try:
a+a=a
except SyntaxError:
print "first exception caught"
.
try:
eval("a+a=a")
except SyntaxError:
print "second exception caught"
在第二种情况下,会打印“第二个异常..”语句(捕获到异常),而在第一种情况下则不会。
第一个异常(我们称之为“SyntaxError1”)与第二个异常(“SyntaxError2”)有什么不同吗?
有什么方法可以捕获 SyntaxError1(从而抑制编译时错误)?在eval 中包装大块代码是不令人满意的;)
【问题讨论】:
-
抑制编译时错误????这可能意味着什么?您能否为您希望解析不可解析代码的用例提供一些定义?应该发生什么?代码有多糟糕,但仍然被“解析”?你在说什么?
-
问题主要集中在不同情况下可能引发的 SyntaxErrors 不一致。 Alex 解释说根本没有不一致,所有描述的行为都包含在编译器构建更高级别的 try/except 结构的机制中。一个可能的用例可能是由受信任的开发人员上传具有某些功能的 *.py 文件(简单的插件系统?),需要在上传后立即验证其语法。