17. Lektion: Fehlerbehandlung: Unterschied zwischen den Versionen

Aus Attraktor Wiki

Wechseln zu: Navigation, Suche
(try/except)
(Micropython Fehlercode (Exceptions))
Zeile 63: Zeile 63:
 
* ZeroDivisionError
 
* ZeroDivisionError
 
Weitere Exceptions konnen durch Module dazu kommen.
 
Weitere Exceptions konnen durch Module dazu kommen.
 +
 +
=== Sparversion===
 +
Ggf. funktioniert das auch ohne Exception Fehlerauswertung:
 +
<pre>
 +
>>> try:
 +
        1/0
 +
    except:
 +
        print("Geht nicht!")
 +
 +
    Geht nicht!
 +
>>>
 +
</pre>
 +
Diese Version ist nicht gerade pythonisch, aber bei der Entwicklung sehr hilfreich.
 +
 +
  
  

Version vom 3. Oktober 2023, 12:48 Uhr

assert

Assert prüft eine Bedingung und gibt wenn False eine Meldung aus.
Das Programm wird dadurch abgebrochen.

>>> a = 1
>>> b = 2
>>> assert a < b, 'a ist kleiner als b'
>>> 

>>> assert not a < b, 'a ist kleiner als b'
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AssertionError: a ist kleiner als b
>>> 
Übung:
  • Teste verschiedene Möglichkeiten um eine assert-Meldung auszulösen.


try/except

Dieses ist die klassische Fehlerbehandlung in Python. (Beispiel für Python)

try:
    # Diese Anweisung kann einen FileNotFoundError auslösen:
    file = open('/tmp/any_file.txt')

except FileNotFoundError:
    print("Datei nicht gefunden!")

except IOError:
    print("Datei nicht lesbar!")

else:
    # Datei einlesen, wenn kein Fehler augetreten ist:
    data = file.read()

finally:
    # Diese Anweisung in jedem Fall ausführen:
        file.close()

Micropython Fehlercode (Exceptions)

Es gibt eine ganze Menge Fehlermeldungen die in Python enthalten sind und mit exception ausgewertet werden können. In Micropython sind es weniger:

  • AssertionError
  • AttributeError
  • Exception
  • ImportError
  • IndexError
  • KeyboardInterrupt
  • KeyError
  • MemoryError
  • NameError
  • NotImplementedError
  • OSError
  • RuntimeError
  • StopIteration
  • SyntaxError
  • SystemExit
  • TypeError
  • ValueError
  • ZeroDivisionError

Weitere Exceptions konnen durch Module dazu kommen.

Sparversion

Ggf. funktioniert das auch ohne Exception Fehlerauswertung:

>>> try:
        1/0
    except:
        print("Geht nicht!")

    Geht nicht!
>>> 

Diese Version ist nicht gerade pythonisch, aber bei der Entwicklung sehr hilfreich.



defensive-programming-in-phyton
https://realpython.com/python-catch-multiple-exceptions/

Navigation

Zurück zu Micropython Kurs 2023 - Teil 1
Zurück zur "Micropython Kurs 2023" Startseite
Zurück zur Programmieren Startseite
Zurück zur Wiki Startseite