我是新來的Python和我沒有困難與學習嘗試的一個例子,除了塊:蟒蛇 - 捕使用try未完成的字符串語法錯誤除了
try:
2 + "s"
except TypeError:
print "There was a type error!"
,輸出一個可以預料到的:
There was a type error!
然而,試圖抓住一個語法錯誤,這樣的時候:
try:
print 'Hello
except SyntaxError:
print "There was a syntax error!"
finally:
print "Finally, this was printed"
我會IR通常會得到EOL語法錯誤。我在jupyter筆記本環境中嘗試了幾次,只有當我轉移到VIM的終端時,我認爲編譯器將except和finally代碼塊解釋爲不完整字符串的其餘部分。
我的問題是如何去處理這種格式的語法錯誤處理?或者是否有更有效的(pythonic?)方法來解決這個問題?
這可能不是真正遇到的問題,但知道是否有一個清晰的解決方法會很有趣。
謝謝!
僅執行行之後缺少一個右引號:print'你好 –
你不能;這樣的語法錯誤在解析期間引發,而不是執行。解析器甚至沒有發現* except * except語句,因爲它仍然是它正在解析的字符串的一部分。您會收到EOL錯誤,因爲非三重引號的字符串必須在當前行結束之前關閉。 – chepner
唯一可捕獲的'SyntaxError's是從語法上有效的'exec'語句中引出的,該語句的*參數*包含語法錯誤。 – chepner