擅长:python、mysql、java
<p>在第一种情况下,异常是由编译器引发的,它在</em>之前运行<em>,<code>try/except</code>结构甚至<em>存在</em>(因为在解析之后将由编译器自己设置它)。在第二种情况下,编译器运行了两次,当编译器作为<code>eval</code>的一部分运行时,<em>在</em>编译器的第一次运行已经设置了<code>try/except</code>之后,会引发异常</p>
<p>因此,为了以某种方式截获语法错误,您必须安排编译器运行两次<code>eval</code>是一种方式,显式的<code>compile</code>内置函数调用另一种方式,<code>import</code>非常方便(在将代码写入另一个文件之后),<code>exec</code>和<code>execfile</code>还有其他可能。但是,无论您如何操作,只有在编译器第一次运行一次以设置所需的<code>try/except</code>块之后,才能捕获语法错误</p>