Moin!
vielen Dank für Deine ausführliche und interessante Antwort.
Es freut mich, dass ich dir helfen konnte.
Ich habe eine eigene Exception, die sich von der Exception-Basisklasse ableitet. Weitere modulspezifische Exceptions erweitern wiederum diese eigene Exception. Inwieweit diese pro Fehler noch Unterklassen erhalten oder ob ich mit Fehlercodes arbeite, habe ich noch nicht entschieden. Das kann sich auch während der Implementierung noch ändern.
Ich habe damals für meine Programmierung mit C++ auch einen universelle Ausnahmeklasse namens »Towel« geschrieben, die flexibler als die Klassen der Standardbibliothek zu handhaben ist. Der Name „Towel“ ist ein kleines Wortspiel: Das Werfen einer Ausnahme, throw Towel, heißt auf Deutsch soviel wie „werfe das Handtuch“.
Was ich bereits meinte: Ich finde eine Anweisung (C++-Beispiel) wie
throw FileError(file_name, errno)
aussagekräftiger als
throw std::runtime_error(file_name + ": " + std::strerror(errno)
weil ich im ersten Fall, dass es Probleme mit einer Datei gab, im zweiten Fall weiß ich nur, dass ein Laufzeitfehler aufgetreten ist. Dass std::runtime_error vielleicht die Basisklasse von FileError, braucht erst einmal keine Rolle zu spielen.
Viele Grüße,
Robert