AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Klassen-Konstruktion einmal anders...

Ein Thema von Ganymed · begonnen am 11. Jun 2003 · letzter Beitrag vom 31. Aug 2004
Antwort Antwort
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#1

Re: Klassen-Konstruktion einmal anders...

  Alt 31. Aug 2004, 17:05
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:
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;
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:

Delphi-Quellcode:
...
raise EIrgendWasIstFaul.create('<IWIF>');
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.:

Delphi-Quellcode:
...
// 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;
Macht das sinn? Müsste man vielleicht nochmal überdenken. Letztendlich muss es dir genehm sein Will dir ja nix aufdrängen.
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 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