![]() |
Re: Klassen-Konstruktion einmal anders...
Tach...
Zitat:
Zitat:
Zitat:
MfG maynard |
Re: Klassen-Konstruktion einmal anders...
Vorstellen könnte ich mir, das du die wichtigsten konstruktoren überdeckst und nur einen key (anstatt der message) übergibst und dann die exception-klasse sich die message holt und an die vorfahren weitergibt:
Delphi-Quellcode:
Metaklassen brauchst du dann eigentlich nicht, obwohl man das vielleicht auch nutzen kann. mal sehn, aber erstmal das hier. Ein aufruf könnte dann so aussehen:
type
TLokiExceptionClass = class of TLokiException ; TLokiException = class(Exception) protected class function ResolveMsg(const aKey:string):string; public constructor Create(const key: string); reintroduce; constructor CreateFmt(const key: string; const Args: array of const); reintroduce; end; ... { TLokiException } constructor TLokiException.Create(const key: string); begin inherited Create(ResolveMsg(key)); end; constructor TLokiException.CreateFmt(const key: string; const Args: array of const); begin inherited CreateFmt(ResolveMsg(key),Args); end; class function TLokiException.ResolveMsg(const aKey: string): string; begin result := GetMsgFromAnywhere(aKey); // musst du selbst implementieren end;
Delphi-Quellcode:
damit würdest du vermeiden, dass du explizite texte angeben musst, sondern nur einen key. So du kannst jetzt nutürlich noch vereinfachungen mit metaklassen machen. zB.:
...
raise EIrgendWasIstFaul.create('<IWIF>');
Delphi-Quellcode:
Macht das sinn? Müsste man vielleicht nochmal überdenken. Letztendlich muss es dir genehm sein :wink: Will dir ja nix aufdrängen.
...
// anstatt direkt zu 'raisen' eine procedure beauftragen: RaiseMyError('<IWIF>'); ... procdure RaiseMyError(const aKey:string); var EClass:TLokiExceptionClass; begin EClass:=TLokiExceptionClass( ? list.indexOfObject(aKey).Object.wasWeissIch ? ); if ECLass <> nil then raise EClass.create(aKey) else raise Exception('Unknown exception :'+aKey); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz