Rozdział 19
[ Powrót do kursów ]
Jeszcze trochę na temat wyjątków
Omawiając wyjątki nie wspomniałem wówczas o jeszcze jednej
ważnej rzeczy. Mianowicie o selektywnej obsługi wyjątków. Spójrz na poniższy
kod:
try
Image1.Picture.LoadFromFile('C:\Image.jpg');
except
on EInvalidGraphic do begin
MessageDlg('To nie jest plik graficzny!', mtError, [mbOK], 0);
end;
on EInvalidImage('Ten opbrazek
jest uszkodzony!',mtError, [mbOK], 0);
end;
Jak widzisz program może obsłużyć wiele wyjątków w zależności od zaistniałej
sytuacji. W pierwszym przypadku jeżeli obrazek nie będzie miał formatu
graficznego wywołany zostanie pierwszy komunikat. Jeżeli obrazek jest
uszkodzony wywoływany jest komunikat drugi. Poniżej napisałem kilka
najpopularniejszych typów:
EFOpenError
- W przypadku błędu podczas otwarcia pliku.
EFCreateError
- W przypadku złego np. zapisania pliku.
EWriteError
- W przypadku złego wpisania np. do pliku.
EComponentError - W przypadku błędu
komponentu.
EInvalidOperation - W przypadku błędu
podczas wykonywania jakiejś operacji.
Możliwe jest także napisanie własnego wyjątku.
W sekcji interface przed sekcją implementation wpisz
taką linie kodu:
type
EMojWyjatek
= class(Exception);
Teraz możesz pisać:
except
on EInvalidGrapihic do begin
{tu wpisz obsługę wyjątku};
end;
on EMojWyjatek do begin
{tu wpisz obsługę swojego wyjątku}end;
W powyższym przykładzie zadeklarowałeś własny typ wyjątku (nowa klasa).
Trochę na temat wywoływania okien komunikatów
Pamiętacie jak pisałem o wywoływaniu okien?
MessageDlg('Hej!', mtInformation, [mbOK], 0);
Można także ustawić położenie takiego okna:
MessageDlgPos('Hej',mtInformation, [mbOK], 0, 20,2);
W powyższym przypadku okno zostanie ustawione o pozycji 20 i 2. Można też zrobić tak:
ShowMessagePos('Hej',20,2);
Przeciążanie
Przeciążanie to nowość w Delphi 4. W poprzednich wersjach Delphi musiałeś pisać coś takiego:
function Dodawanie(L1, L2 : Integer) : Integer;
function Dodawanie2(L1, L2 : Double) : Double;
Teraz możesz pisać tak:
function Dodawanie(L1, L2 : Integer) : Integer; overload;
function Dodawanie(L1, L2 : Double) : Double; overload;
Rozumiesz w czym rzecz? W poprzednich wersjach Delphi nie tolerowało nazw funkcji o takich samych nazwach. Teraz jest to możliwe dzięki zastosowaniu słówka overload.
[ Powrót do kursów ]