try:
something here
except:
print('the whatever error occurred.')
Wie kann ich den Fehler/die Ausnahme in meinem except:
blockieren?
try:
something here
except:
print('the whatever error occurred.')
Wie kann ich den Fehler/die Ausnahme in meinem except:
blockieren?
Für den Fall, dass Sie Fehlerstrings übergeben wollen, hier ein Beispiel aus Fehler und Ausnahmen (Python 2.6)
>>> try:
... raise Exception('spam', 'eggs')
... except Exception as inst:
... print type(inst) # the exception instance
... print inst.args # arguments stored in .args
... print inst # __str__ allows args to printed directly
... x, y = inst # __getitem__ allows args to be unpacked directly
... print 'x =', x
... print 'y =', y
...
<type 'exceptions.Exception'>
('spam', 'eggs')
('spam', 'eggs')
x = spam
y = eggs
In Erweiterung der "except Exception as e:"-Lösung gibt es hier einen netten One-Liner, der einige zusätzliche Informationen wie die Art des Fehlers und den Ort, an dem er aufgetreten ist, enthält.
try:
1/0
except Exception as e:
print(f"{type(e).__name__} at line {e.__traceback__.tb_lineno} of {__file__}: {e}")
Output:
ZeroDivisionError at line 48 of /Users/.../script.py: division by zero
Man hat ziemlich viel Kontrolle darüber, welche Informationen aus dem Traceback beim Abfangen von Ausnahmen angezeigt/protokolliert werden.
Der Code
with open("not_existing_file.txt", 'r') as text:
pass
würde den folgenden Traceback erzeugen:
Traceback (most recent call last):
File "exception_checks.py", line 19, in <module>
with open("not_existing_file.txt", 'r') as text:
FileNotFoundError: [Errno 2] No such file or directory: 'not_existing_file.txt'
Wie bereits von anderen erwähnt, können Sie den gesamten Traceback mit dem Traceback-Modul abfangen:
import traceback
try:
with open("not_existing_file.txt", 'r') as text:
pass
except Exception as exception:
traceback.print_exc()
Dies ergibt die folgende Ausgabe:
Traceback (most recent call last):
File "exception_checks.py", line 19, in <module>
with open("not_existing_file.txt", 'r') as text:
FileNotFoundError: [Errno 2] No such file or directory: 'not_existing_file.txt'
Das Gleiche können Sie mit Hilfe der Protokollierung erreichen:
try:
with open("not_existing_file.txt", 'r') as text:
pass
except Exception as exception:
logger.error(exception, exc_info=True)
Output:
__main__: 2020-05-27 12:10:47-ERROR- [Errno 2] No such file or directory: 'not_existing_file.txt'
Traceback (most recent call last):
File "exception_checks.py", line 27, in <module>
with open("not_existing_file.txt", 'r') as text:
FileNotFoundError: [Errno 2] No such file or directory: 'not_existing_file.txt'
Möglicherweise sind Sie nicht am gesamten Traceback interessiert, sondern nur an den wichtigsten Informationen, wie z. B. dem Namen der Ausnahme und der Ausnahmemeldung, verwenden:
try:
with open("not_existing_file.txt", 'r') as text:
pass
except Exception as exception:
print("Exception: {}".format(type(exception).__name__))
print("Exception message: {}".format(exception))
Output:
Exception: FileNotFoundError
Exception message: [Errno 2] No such file or directory: 'not_existing_file.txt'
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.