Einzelnen Beitrag anzeigen

Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#4

Re: Normale Exceptions nicht anzueigen

  Alt 3. Sep 2007, 22:57
Um eine erneute Exception eines anderen Typs zu werfen, jedoch die Daten der alten Exception zu übernehmen,
könntest du einfach einen Kopierkonstruktor nehmen:

Delphi-Quellcode:
type
ESilentException = class(Exception)
public
 ..
 constructor Create(oldException : Exception);
 ..
end;
...

constructor ESilentException.Create(oldException : Exception);
begin
 Message := oldException;
 ...und was sonst noch wichtig wäre.
end;


So jetzt dein Code:
  ...
  on E: EMyException do
    raise ESilentException.Create(E);

  ...
  //auf höherer Ebene wäre Behandlung bei Bedarf noch möglich...
  on E: ESilentException do
  begin
    //Behandlung Stiller Exceptions z. B.
    if E.OriginalException is EMyException then
      HandleMyException;
  end;
Und wenn du das stattdessen für eine Basisklasse XYException machst, und alle Exceptions davon ableitest :
EXYException = class(MyBaseExecption)

Dann brauchste den Kopierkonstruktor nicht für alle nötigen Exceptions implementieren.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat