2012-04-24 13 views
5

Zastanawiam się, czy Python ma komunikat o błędzie odpowiadający $! w perlu? Każdy, kto mógłby dać mi odpowiedź, będzie bardzo doceniony.

Dodano:

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

Gdy wystąpi wyjątek, mam coś takiego. Jeśli zastosuję blok próbny i catch, mogę go złapać i użyć sys.exit (wiadomość), aby zalogować wiadomość. Ale, czy jest jakaś szansa że mogę uzyskać ciąg SyntaxError: nieprawidłową składnię i umieścić go w wiadomości

+0

Nie jestem pewien, o co prosisz, ponieważ nigdy nie robiłem żadnego kodu perla. Ale [moduł logowania Pythona] (http://docs.python.org/library/logging.html) może Cię zainteresować – inspectorG4dget

+0

Dla ciekawskich: Oto dokumenty na '$!': Http: // perldoc. perl.org/perlvar.html#Error-Variables – Cameron

+0

perl ma funkcję die(), w której można umieścić $! aby uzyskać komunikat o błędzie z systemu –

Odpowiedz

8

Python zazwyczaj używa wyjątków do zgłaszania błędów. Jeśli jakaś operacja systemu operacyjnego zwróci kod błędu, wywołuje wyjątek przechwycony w bloku try-except. W przypadku operacji systemu operacyjnego to jest OSError. Wartość errno jest zawarta w wystąpieniu wyjątku.

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]) 

wyjściowa:

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

err NIE jest krotką. Jest to instancja klasy OSError, która, podobnie jak większość klas wyjątków, obsługuje indeksowanie. – yak

+0

@yak Masz rację, zgłupiałem. Będę edytować moją odpowiedź. – Keith

5

Nie ma bezpośredniego odpowiednika, o ile jestem świadomy.

Python raczej sprzyja odrzucaniu wyjątków, co umożliwia późniejszy dostęp do komunikatu o błędzie w podobny sposób, ale przez obiekt wyjątku zamiast specjalnej zmiennej.

Powiązane problemy