2012-04-24 32 views
5

我想知道如果python有錯誤報告消息相當於$!在Perl中? 任何人都可以給我一個答案將不勝感激。

補充:

example% ./test 
File "./test", line 7 
    test1 = test.Test(dir) 
^
SyntaxError: invalid syntax 

當異常發生時,我得到了這樣的事情。如果我應用try和catch塊,我可以捕獲並使用sys.exit(消息)來記錄消息。但是,有沒有可能 ,我可以得到字符串語法錯誤:無效的語法,並把它放在消息

+0

我不確定你在問什麼,因爲我從來沒有做過perl編碼。但是[python的日誌記錄模塊](http://docs.python.org/library/logging.html)可能會對你感興趣。 – inspectorG4dget 2012-04-24 04:18:27

+0

對於那些好奇的人:這裏是'$!'的文檔:http:// perldoc。 perl.org/perlvar.html#Error-Variables – Cameron 2012-04-24 04:24:44

+0

perl有die()函數,你可以把$!從系統得到錯誤信息 – 2012-04-24 04:24:48

回答

8

Python的一般使用異常來報告錯誤。如果某些操作系統操作返回錯誤代碼,則會引發您在try-except塊中捕獲的異常。對於操作系統操作,即OSError。 errno包含在異常實例中。

from __future__ import print_function 
import os 

try: 
     os.stat("xxx") 
except OSError as err: 
     print (err) 
     # The "err" object is on instance of OSError. It supports indexing, with the first element as the errno value. 
     print(err[0]) 

輸出:

[Errno 2] No such file or directory: 'xxx' 
2 
+3

err不是一個元組。它是OSError類的一個實例,與大多數異常類一樣,它支持索引。 – yak 2012-04-24 04:40:03

+0

@yak你說得對,我瘋了。我會編輯我的答案。 – Keith 2012-04-24 10:17:00

5

沒有直接等價的,據我所知。

Python傾向於傾向於拋出異常,它允許您以類似的方式訪問錯誤消息,儘管通過異常對象而不是特殊變量。