Hello,
Macht das jemand von Euch auch, wenn ja, warum nicht?
Weil das gegenüber echten Exceptions den gravierenden Nachteil hat, dass man auf den Rückgabewert an Ort und Stelle reagieren, bzw. ihn nach oben „durchreichen“ müsste.
Jow, das isses, danke Dir!!!
Nee, das isses nicht wirklich und schon gar nicht vollständig.
Schon in den frühen Hochsprachen im Real Mode, ja sogar schon in Makroassemblern hat man mit "runtime-errors" gearbeitet. Dies war im Prinzip ein Stückchen Code, das bei kritischen Operationen von der IDE (der Makroassembler Entwicklungsumgebung) automatisch in den eigentlichen Code eingefügt wurde und so z.B. Variablenüberlauf, Filesystemfehler, Rechenfehler (Division durch 0), usw. abgefangen hat. Es hat aber (anfangs) immer nur auf die Exit-Routine des Programmes verzweigt, in der dann zumindest die wichtigsten Dinge noch aufgeräumt werden konnten (Speicher freigeben, Dateien schließen usw.) und eine spärliche Fehlermeldung ausgegeben werden konnte.
Das hatte den Sinn, dass nach einem Absturz des Programmes nicht der ganze Rechner stand.
Erst mit der OOP (auch schon der anfänglichen zu Assemblerzeiten) hat man dann versucht, speziellere globale Reaktionen einzuführen. Leider fehlten da am Anfang noch die passenden Entwicklungsumgebungen, die einem die geführte Codeentwicklung ermöglicht haben. Man musste alle denkbaren Fehler noch "zu Fuß" einfangen und klassifizieren und dafür den Alternativcode im Fehlerfalle erstellen. Viel schlimmer war aber das händische Auflösen der Ausprungadresse, der Zieladresse für die Fehlerbehandlung und der Rücksspungadresse im Fehlerbehebungs-Erfolgsfall sowie deren Beseitigung nebst Beseitigung des zugehörigen Codeblockes im Fehlerbebungs-Misserfolgsfall.
Dies wird duch das "try-catch"-Prinzip durch die IDEs nun eher wewniger als mehr automatisch erfüllt, denn man muss ja dafür diese lästigen Zeilen vorsehen. Der ganze Apparat dahinter wird aber dann von der IDE (und ihren Helfern) eingepflegt.
Zusätzlich dazu verzweigen die angemeldeten Fehleraktoren nicht statisch auf einen Code, sondern über eine Translationsschicht (ähnlich der guten alten IVT), sind also "umbiegbar", damit also in eine Meldungsschlange umleitbar.
Das Wesentliche dabei ist, dass durch das neue Konzept auch Daten (Parameter) übermittelt werden können, was bei simplen Runtime-Errors nicht möglich war. Da stand dioe Begründung dann im globalen Environment.
So, nun warte ich auf diejenigen, die es anhand von Codeausschnitten alles viiiiel besser erklären können [...] :-)
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg