Als Diskussionsgrundlage von oben nach unten:
-
Eine shell (die NICHT unbedingt ein "Kommandzeilenetwas" ist) startet Prozesse. Als Elternprozess selbst verläuft diese nicht fehlerhaft wenn ein Kindprozess fehlerhaft verläuft. Eine Shell selbst ist Kind- oder Enkelprozess eines Steuerprogramms eines OS (z.B. initd/systemd unter Linux), welches selbst nur vom Kernel verwaltet wird.
-
Ein Compiler/Interpreter untersucht den Quelltext auf Syntaxfehler, manche (Compiler müssen das ja tun) auch auf Aufrufe fehlender Funktionen bzw. Klassen, manche also auch schon auf die Existenz der Libs (z.b. Klassendateien) und signalisiert diese. Der Elternprozess selbst verläuft hier nicht fehlerhaft, der Kindprozess (Compiler/Interpreter) bricht aber ab.
-
Wird das Kompilat in einer "VM" ausgeführt (wie Java) werden Laufzeitfehler an diese gemeldet. Der Elternprozess (VM) selbst verläuft hier nicht fehlerhaft, der Kindprozess bricht aber ab.
-
Wird das Kompilat eines Compiler/Interpreters direkt vom Compiler/Interpreter ausgeführt, dann werden Laufzeitfehler an den Elternprozess (eben der Kompiler/Interpreter) gemeldet. Auch hier verläuft der Elternprozess nicht fehlerhaft, der Kindprozess bricht aber ab.
-
Ist das Kompilat stand-alone ausführbar, dann fügt der Compiler beim Kompilieren eine Fehlerbehandlung hinzu. Die kann "hart codiert" werden oder durch Verlinken von libs (-> .dll, "dynamic link libary" (win); -> .so, "shared object" (linux) ) Die Routinen liefert also die libarys der Sprache. Auch hier verläuft der Elternprozess (z.B. die Shell!) nicht fehlerhaft, der Kindprozess bricht aber ab.
-
Im Assembler-Programm können Befehle zu unmöglichen oder unerlaubten Aktionen führen, z.B. dem Versuch, Daten in/aus nicht erlaubten Speicherbereichen zu pooken oder zu peeken. Auch muss der Assembler bekannte und erlaubte Befehle vom Rest zu unterscheiden wissen. Fehler werden über Interrupts gehändelt. Werden Assemberprogramme ausgeführt und sind fehlerhaft, dann verläuft der Elternprozess (der Assembler selbst) nicht fehlerhaft, der Kindprozess bricht aber ab.
Bis hierher sind die Elternprozesse immer in der Lage den Fehler des Kindprozesses an den eigenen Elternprozess weiterzumelden , bzw. sollen dazu in der Lage sein. Sind sie es nicht ergibt sich manchmal ein Bluescreen. Bluescreens treten besonders dann auf, wenn ein Prozess, der keinen Elternprozess hat, einen Fehler hat oder nicht abfangen kann.
- Bei erkannten Fehlern auf echter Prozessorebene tritt der letzte Satz des vorherigen Absatzes automatisch in Kraft. Manche enden aber nicht in einem Abbruch sondern mit falschem Ergebnis.
Wie wird es in der Praxis abgehandelt bis hin zur untersten Schicht...
Wenn Du es NOCH genauer wissen willst grenze Deine Frage ein.