Exceptions, wie funktionieren die?
chris
- php
ja hallo,
hab das schon im Thema stehn.
Kann mir jemand mal für doofe erklären, wie exceptions eigentlich funktionieren?
Was läuft da ab im Programm und was ist die Voraussetzung dafür, dass es überhaupt funktioniert?
danke schonmal
chris
echo $begrüßung;
Kann mir jemand mal für doofe erklären, wie exceptions eigentlich funktionieren?
Eine Exception ist im Grunde genommen der Abbruch der aktuell laufenden Operation und der Sprung zum nächstgelegenen catch-Block, um dort einen für diesen Fall vorgesehenen Ersatz-Code auszuführen.
Was läuft da ab im Programm und was ist die Voraussetzung dafür, dass es überhaupt funktioniert?
Voraussetzung ist ein PHP ab Version 5 und dass sie irgendwer aufruft. Herkömmlicherweise meldet sich PHP mit den altbekannten Fehlermeldungen. Nur einige wenige neuere Extensions sind in der Lage stattdessen auch Exceptions zu werfen, beispielsweise PDO.
echo "$verabschiedung $name";
echo ist gut...
Eine Exception ist im Grunde genommen der Abbruch der aktuell laufenden Operation und der Sprung zum nächstgelegenen catch-Block, um dort einen für diesen Fall vorgesehenen Ersatz-Code auszuführen.
wo geht es dann nach der Behandlung weiter?
hinter dem Block, in dem die ecxeption geworfen wurde oder wo?
kann man sowas mit php auch irgendwie nachbauen, oder sind da vorgefertigte strukturen in dem parser für verantwortlich?
danke
chris
Hallo Chris,
wo geht es dann nach der Behandlung weiter?
hinter dem Block, in dem die ecxeption geworfen wurde oder wo?
wäre es eine Idee, mal das entsprechende Handbuchkapitel durchzuarbeiten?
Freundliche Grüße
Vinzenz
Nabend Vineznz,
wo geht es dann nach der Behandlung weiter?
hinter dem Block, in dem die ecxeption geworfen wurde oder wo?wäre es eine Idee, mal das entsprechende Handbuchkapitel durchzuarbeiten?
Das wäre sicher eine idee, wenn was drinstehen würde.
Da steht aber leider gar nichts drin, wie sowas gebaut ist. in den zwei bis drei Seiten steht eigentlich gar nichts drin, um zu verstehen, was der unterschied zu einem 'return fehlerwert' ist, außer das man dann anschließend noch ein paar extra informationen abfragen kann.
ist wohl doch keine so gute idee gewesen
kennt nicht eine/r eine empfehlenswerte doku zu dem thema, die ein bisschen gesprächiger ist?
danke
chris
echo $begrüßung;
Da steht aber leider gar nichts drin, wie sowas gebaut ist. in den zwei bis drei Seiten steht eigentlich gar nichts drin, um zu verstehen, was der unterschied zu einem 'return fehlerwert' ist, außer das man dann anschließend noch ein paar extra informationen abfragen kann.
Der Unterschied ist, dass du den Code zur normalen Bearbeitung der Aufgabe vom Code zur Behandlung von Fehlern trennen kannst.
Es gibt dazu unter den Experten (zumindest unter denen, die öffentlich das Wort ergreifen) unterschiedliche Meinungen, wann man Exceptions werfen soll und wann man anderweitig signalisiert, dass kein oder ein negatives Ergebnis zustande kam.
kennt nicht eine/r eine empfehlenswerte doku zu dem thema, die ein bisschen gesprächiger ist?
Was genau möchtest du denn wissen? So umfangreich ist das Thema nicht. Eine Exception ist ein spezielles Objekt, das irgendwo erzeugt und geworfen wird, wobei der Programmfluss unterbrochen wird. Irgendwo anders wird sie wieder aufgefangen und da geht es weiter.
echo "$verabschiedung $name";
echo $begrüßung;
Eine Exception ist im Grunde genommen der Abbruch der aktuell laufenden Operation und der Sprung zum nächstgelegenen catch-Block, um dort einen für diesen Fall vorgesehenen Ersatz-Code auszuführen.
wo geht es dann nach der Behandlung weiter?
hinter dem Block, in dem die ecxeption geworfen wurde oder wo?
Hinter dem catch-Block, der die Exception behandelt hat. Die fehlerauslösende Stelle wird nicht wieder angesprungen. Wenn sich ein catch-Block nicht für diese Exception-Klasse zuständig fühlt, wird der nächstäußere catch-Block aufgesucht.
kann man sowas mit php auch irgendwie nachbauen, oder sind da vorgefertigte strukturen in dem parser für verantwortlich?
PHP ab Version 5 kennt Exceptions. Selbst nachbauen geht nicht. Du müsstest dann wissen, wo die Stelle ist, an der es weitergehen soll und gezielt dort hinspringen (und das auch erstmal können ohne ein goto). Eine Exception weiß nicht, wo sie abgefangen werden wird. Sie rennt einfach nur nach außen, und wenn sie Glück hat, steht an irgend einer Stelle jemand im Weg, der sie auffängt.
echo "$verabschiedung $name";