Ja, per se können
Exception-Klassen auch von was Anderem abstammen (in der System.pas ist das als TObject deklariert), aber praktisch stammen (normalerweise) alle Exceptions von
Exception ab.
Delphi-Quellcode:
try
raise TStringList.Create;
except
on E:
Exception do
ShowMessage('
ja ' + E.ClassName);
else // bzw. on E: TObject do
ShowMessage('
ne ' + ExceptObject.ClassName);
end;
Von alleine passiert sowas aber nicht.
Muß schon wer
böswillig eine "falsche" Klasse/Instanz erstellen.
Auch System-
Exception werden von der System und SysUtils immer nur in Delphi-Exceptions konvertiert.
PS: Eine "
Exception" aus z.B. einer
DLL ist nicht mit der "
Exception" in der EXE kompatibel ... es sind unterschiedliche Typen (TypeInfo/
RTTI), welche nur "zufällig" gleich heißen. (außer bei Verwendung von Laufzeitpackages)