Ausnahmemeldung (Python 2.6)

In Python, wenn ich eine Binärdatei öffne, die nicht existiert, wird das Programm mit einem Fehler beendet und druckt:

Traceback (most recent call last): File "C:\Python_tests\Exception_Handling\src\exception_handling.py", line 4, in <module> pkl_file = open('monitor.dat', 'rb') IOError: [Errno 2] No such file or directory: 'monitor.dat' 

Ich kann damit umgehen mit 'try-except', wie:

 try: pkl_file = open('monitor.dat', 'rb') monitoring_pickle = pickle.load(pkl_file) pkl_file.close() except Exception: print 'No such file or directory' 

Wie konnte ich in der Ausnahme die folgende Zeile drucken?

 File "C:\Python_tests\Exception_Handling\src\exception_handling.py", line 11, in <module> pkl_file = open('monitor.dat', 'rb') 

Also würde das Programm nicht beenden.

    4 Solutions collect form web for “Ausnahmemeldung (Python 2.6)”

    Dies druckt die Ausnahmemeldung:

     except Exception, e: print "Couldn't do it: %s" % e 

    Dies zeigt den ganzen Rückblick:

     import traceback # ... except Exception, e: traceback.print_exc() 

    Aber du möchtest vielleicht nicht fangen. Je schmaler du deinen Fang machen kannst, desto besser, im Allgemeinen. So möchten Sie vielleicht versuchen:

     except IOError, e: 

    stattdessen. Auch auf das Thema der Verringerung Ihrer Ausnahmebehandlung, wenn Sie nur über fehlende Dateien betroffen sind, dann setzen Sie den Versuch – außer nur um die offene:

     try: pkl_file = open('monitor.dat', 'rb') except IOError, e: print 'No such file or directory: %s' % e monitoring_pickle = pickle.load(pkl_file) pkl_file.close() 

    Wenn du das von der Exception übergebene Exception-Objekt erfassen willst, ist es am besten, das in Python 2.6 eingeführte NEUE Format zu verwenden, das derzeit beide unterstützt, weil es die einzige Möglichkeit ist, es in Python 3 zu machen.

    Und das ist:

     try: ... except IOError as e: ... 

    Beispiel:

     try: pkfile = open('monitor.dat', 'rb') except IOError as e: print 'Exception error is: %s' % e 

    Eine detaillierte Übersicht finden Sie im What's New in der Python 2.6 Dokumentation .

    Python hat das Traceback- Modul.

     import traceback try: pkl_file = open('monitor.dat', 'rb') monitoring_pickle = pickle.load(pkl_file) pkl_file.close() except IOError: traceback.print_exc() 

    Danke für alles.

    Das ist, was ich brauchte 🙂

     import traceback try: # boom except Exception: print traceback.format_exc() 
    Python ist die beste Programmiersprache der Welt.