MicroPython: Fehlerbehandlung und Ausnahmebehandlung

Im Wesentlichen können Fehler und Ausnahmen in MicroPython in zwei Kategorien unterteilt werden:

  • Hardware-Fehler, die vom Mikrocontroller oder den angeschlossenen Geräten erzeugt werden.
  • Software-Fehler, die vom Programm selbst ausgelöst werden.

Ein Beispiel für einen Hardware-Fehler könnte ein Speicherüberlauf sein, bei dem ein Programm versucht, mehr Speicher zu verwenden, als verfügbar ist. Ein Beispiel für einen Software-Fehler könnte eine Division durch Null oder ein fehlerhaftes Argument in einer Funktion sein.

Alle Fehler führen in der Regel dazu, dass das Programm unkontrolliert beendet wird und der Mikrocontroller manuell neu gestartet werden muss.

MicroPython bietet Methoden zur Fehler- und Ausnahmebehandlung, die ähnlich wie in Python funktionieren. In der Regel verwendet man die Funktionen der Fehler- und Ausnahmebehandlung, um im Fehlerfall einen anderen Lösungsweg zu gehen, um das Programm fortzuführen. Es ermöglicht Programmierern, ihre Programme sicherer und stabiler zu gestalten.

Ausnahmebehandlung mit einem try/except-Block

Zur Ausnahmebehandlung können in MicroPython die try-except-Blöcke verwendet werden, um Ausnahmen abzufangen, die während der Ausführung einer Anweisung auftreten können.

Im folgenden Beispiel wird versucht, eine Division durch Null durchzuführen, die zwangsläufig zu einer Ausnahme führt.

x = 1 / 0
print("Hallo Welt")

Die zweite Zeile des Programmcodes wird gar nicht mehr ausgeführt, weil das Programm wegen des Fehlers in der ersten Zeile abgebrochen wird. Wenn sich dieser Fehler nicht ausschließen lässt, kann man wenigstens eine Ausnahmebehandlung vorsehen.

Im folgenden Beispiel fängt der try-Block diesen Fehler mit einem except-Block ab, der eine Fehlermeldung ausgibt.

try:
    # Programmcode, der zu einem Fehler führen kann
    x = 1 / 0
except Exception as e:
    # Programmcode, der im Fehlerfall ausgeführt wird
    print("Fehler:", e)

Die Ausgabe einer Fehlermeldung muss nicht zwangsläufig sinnvoll sein. Wir versuchen es mit einer sinnvolleren Variante, die den Programmcode weiterführt.

try:
    x = 1 / 0
except Exception as e:
    x = 0
print(x)

Weitere Ausnahmebehandlungen mit try/except

Es gibt noch weitere Arten von except-Blöcken, um bestimmte Ausnahmen abzufangen. Beispielsweise auch, um auf Benutzerunterbrechungen zu reagieren.

try:
    raise IndexError("Das hier ist ein Index-Fehler")
except IndexError as e:
    print(e)
except (TypeError, NameError):
    pass
else:
    print("Keine Probleme")
finally:
    print("Hier können wir Ressourcen aufräumen")
  • try: Programmcode, in dem ein Fehler vorkommen kann. Mit „raise“ wird ein Fehler erzeugt und ausgegeben.
  • except: Kann mehrfach vorkommen und auf bestimmte Fehler reagieren. „pass“ ist eine Nicht-Operation. Er wird verwendet, wenn in einem Block nichts passieren soll. Normalerweise würden man hier den Fehler klären.
  • else: Ist optional und kann hinter allen except-Blöcken verwendet werden. Er wird nur dann ausgeführt, wenn keine Ausnahmen aufgetreten ist.
  • finally: Wird immer dann ausgeführt, bevor der „try/except“-Block beendet wird.

Nachteile der Fehler- und Ausnahmebehandlung

Die Fehlerbehandlung und Ausnahmebehandlung in MicroPython kann sehr bequem und nützlich sein, um die Stabilität von Programmen zu verbessern. Allerdings gibt es auch einige Nachteile:

  • Komplexität: Wenn Ausnahmen nicht auftreten, kann das Hinzufügen von Ausnahmeroutinen den Programmcode vergrößern und das Lesen des Codes erschweren.
  • Versteckte Fehler: Das Verwenden von Ausnahmeroutinen kann dazu führen, dass Fehler, die korrigiert gehören, versteckt bleiben, kaum zu finden sind und die Fehlerkorrektur erschweren.
  • Sicherheitsrisiken: Wenn Ausnahmeroutinen nicht sorgfältig geprüft werden, kann das zu potenziellen Sicherheitsrisiken führen, wenn Angreifer die Dateneingabe manipulieren können und dadurch ein unerwartetes Verhalten ausnutzen.

Beispiele mit try/except

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren