Obsługa wyjątków w własnej klasie

0

Mam problem, pisze sobie klasę i chciałem zadeklarować kilka własnych wyjątków tylko nie bardzo wiem jak to zrobić, nie chodzi mi o samo try except tylko powiedzmy procedura dostała string'a a w nim znak który nie jest dozwolony (bo tak chce) i wyrzuca wyjątek nie w formie msgbox'a czy czegoś tylko przekazuje to dalej i co zrobić z tym komunikatem odpowiada zewnętrzny try
tak orientacyjnie daje przykład bo nie wiem jak to ogarnąć żeby nawet google mi podpowiedziało :(

type TMojaKlasa = class
 public
  procedure Foo(S:String);
  ...
end;
...
procedure TMojaKlasa.Foo(S:String);
begin
 if POS(';',S) > 0 then { i tu właśnie generowanie tego wyjątku przekazywanie go gdzieś}
end;

...
//moja klasa jest tworzona gdzieś w aplikacji konsolowej
var 
 D:TMojaKlasa;
 D:=TMojaKlasa.Create;
try
 D.Foo(';haha');
except on E:Exception do
 //i tu sobie dopiero obsługuje w jaki sposób wyświetlę ten komunikat
 Writeln(E.Classname, ': ', E.Message);
 //albo 
 ShowMessage(E.Message);
 // albo cos innege
end;
D.Free;

Kiedyś gdzieś właśnie takie cuś widziałem ale nie mogę tego znaleźć :(

1

raise Raise oczywiście nie musi być to Exception możesz sobie zadeklarować własny typ dziedziczący po Exception lub po czym tam chcesz i jakoś ten rodzaj wyjątków osobno obsługiwać np deklarujemy:

type
   EMyException = class(Exception);

i obsługa

except
 //to zawsze wazna jest kolejnosc
 on E: EMyException do //kiedy zostanie wywolany wyjatek klasy EMyException
   ShowMessage(E.Classname + ' '  + E.Message); //to sie wykona
 on E: Exception do //ubsługa wyjatków które nie zostaly obsłuzone wczesniej
   ShowMessage(E.Classname + ' '  + E.Message); //to juz nie pomimo ze EMyException dziedziczy po Exception ponieważ wyjatki EMyException są obsluzone wczesniej
end;
0

No wielkie dzięki o to mi chodziło XD

0

@hzmzp - po raz kolejny zakładasz wątek z pytaniem o podstawy... Może zamiast marnować czas na oczekiwanie na odpowiedzi chociaż raz przeczytasz kurs kodzenia w Delphi? Pierwszy lepszy (w tym serwisie) artykuł opisuje to, czego szukasz; Dodatkowo są jeszcze przecież inne kursy, artykuły;

Druga sprawa to nazewnictwo - skończ z takim idiotyzmem jak identyfikatory typu dupa; To nie GaduGadu czy FaceBook, więc pisz z sensem, albo następnym razem nagrodzę wątek koszem;

Wątek ląduje w dziale Newbie tak jak wspomniałem wyżej, ponieważ dotyczy podstaw języka.

1 użytkowników online, w tym zalogowanych: 0, gości: 1