Das gesamte Beispiel basiert auf einer früheren Version. Es wurde nur eine geeignete Fehlerbehandlung auf Basis von Events, RelatedEvents und Conclusions hinzugefügt.
Die Fehlerbehandlung basiert hier auf objektbezogenen Ereignissen, d.h. wenn ein Fehler in Zusammenhang mit einem Objekt (hier betrifft es nur Kollektionen) auftritt, wird ein Ereignis erzeugt, das den Fehler beschreibt, und in Bezug zu diesem Objekt setzt. D.h. die Fehlerbehandlung hängt direkt von diesem Objekt ab. Dieser Mechanismus wird in allgemeiner und sehr flexibler Form von RelatedEvents angeboten.
In der Schnittstelle neu hinzugekommen sind
Prinzipiell wäre es auch möglich gewesen, weniger (oder im Extremfall garnichts) bezüglich der Fehlerbehandlung zu exportieren. Dieser Umfang ist jedoch sinnvoll, um den Nutzer dieses Moduls alle Freiheiten offenzulassen, wozu insbesondere die volle Auswertung eines Fehlers gehört.
In der Implementierung von Collections sind die Prozeduren InitErrorHandling und Error hinzugekommen. InitErrorHandling kreiert zur Initialisierungszeit den Ereignistyp Collections.error und füllt das Feld mit den Fehlermeldungen. Error generiert ein Fehlerereignis und füllt die entsprechenden Komponenten, um es dann als objektbezogenes Ereignis an RelatedEvents weiterzugeben. Bei Collections.Remove und Collections.Get erfolgen dann entsprechende Fehlertests und Aufrufe von Error.
Die Hauptschleife in Cmds stellt dann nach jedem Aufruf von ReadExpression fest, ob irgendwelche Fehler vorliegen und gibt sie dann mit Hilfe von Conclusions aus.