Es kommt auch auf die Grösse des Projekts an.
Bei kleineren Projekten kann man ohne weiteres Exceptions direkt so auslösen:
raise Exception.Create('Fehler beim Laden der Konfiguration');
Da die Anzahl der raise - Anweisungen relativ klein ist, weiss man schon anhand des Fehlertextes wo man suchen muss.
Bei grossen und sehr grossen Anwendungen gibt es so viele Stellen im Sourcecode an denen eine
Exception ausgelöst wird, dass man unmöglich alle im Kopf haben kann.
Dann ist es sehr hilfreich wenn man eigene
Exception-Klassen einführt (z.B. EImportError, EXmlError, ...).
Diese
Exception-Klassen leitet man meist direkt von der Klasse
Exception ab, da die anderen in SysUtils definierten Klassen nur recht selten passen.
Bei richtig grossen Anwendungen wird man die (nichtabgefangene)
Exception nicht nur anzeigen, sondern man wird
Classname
und
Message
der
Exception in eine Logdatei schreiben.
Hier zahlt es sich dann aus, wenn man je nach "Bereich" oder Fehlerart eine eigene Exceptionklasse hat und so gleich weiss wo man suchen muss.