2015-02-07 156 views
1
from __future__ import print_function 

try: 
    print "a" 
except SyntaxError: 
    print('error') 

爲什麼SyntaxError異常未被捕獲?我使用Python 2.7Python語法錯誤未被捕獲

輸出:

File "test", line 4 
    print "a" 
      ^
SyntaxError: invalid syntax 
+0

你不能抓到語法錯誤 – 2015-02-07 18:12:02

+2

@BhargavRao:是的,你可以。只是*不在文件中的錯誤*。 – 2015-02-07 18:17:27

回答

7

你抓不到模塊本身的語法錯誤,因爲它拋出代碼運行之前。由於Python逐行編譯,因此Python不運行代碼,這是在此失敗的整個文件

你可以這樣做:

syntaxerror.py

from __future__ import print_function 

print "a" 

catching.py

from __future__ import print_function 

try: 
    import syntaxerror 
except SyntaxError: 
    print('Error') 

因爲catching腳本可以在編譯後運行,但試圖導入syntaxerror然後觸發一個新的編譯任務在syntaxerror.py,引起SyntaxError例外h然後可以被抓住。

相關問題