Niniejszy artyku│ po╢wiΩcony bΩdzie wyj▒tkom
i ich opisom. Zacznijmy od pocz▒tku - co to s▒ wyj▒tki i po co
powinienem je stosowaµ? Wyj▒tek przekazywany jest w chwili gdy program
nie mo┐e wykonaµ danej operacji. Zaistnienie wyj▒tku ukazywane jest
przede wszystkim poprzez wy╢wietlenie stosownego komunikatu. Np. gdy
chcemy za│adowaµ obrazek graficzny, a u┐ytkownik programu wybierze
nieprawid│owy format graficzny?
try
Image1.Picture.LoadFromFile(OpenPictureDialog.FileName);
except
MesssageDlg('To nie jest format
graficzny! Czy chcesz wy╢wietliµ pomoc?', mtError, [mbYes, mbNo], 0);
W tym wypadku mo┐na by by│o obs│u┐yµ naci╢niΩcie
klawiszy Yes i No. Najwa┐niejsz▒ sekcj▒ jest sekcja try.
To po niej nastΩpuje wykonanie poni┐szych operacji. Je┐eli takowe
siΩ nie powiod▒ - nastΩpuje wygenerowanie wyj▒tku. Istnieje tak┐e
mo┐liwo╢µ u┐ywania zamiast s│owa except - finally. Operacje
znajduj▒ce siΩ po tym bloku wykonywane bΩd▒ niezale┐nie od tego,
czy operacja siΩ powiedzie - czy te┐ nie. Istnieje tak┐e mo┐liwo╢µ
obs│u┐enia kilku wyj▒tk≤w w zale┐no╢ci od zaistnia│ej sytuacji.
try
Image1.Picture.LoadFromFile(OpenPictureDialog.FileName);
except
on EInvalidImage do //w
przypadku niew│a╢ciwego formatu pliku!
MesssageDlg('To nie jest format graficzny!', mtError, [mbOK],
0);
on EComponentError do //b│▒d
komponentu
MessageDlg('Nast▒pi│ b│▒d, kt≤ry wykona│ nieprawid│owy
komponent', mtError, [mbOK], 0);
Jak widaµ w tym wypadku w zale┐no╢ci od
zaistnia│ej sytuacji wyj▒tek nastΩpuje obs│u┐ony przez dwa
komunikaty. Istnieje te┐ mo┐liwo╢µ stworzenia w│asnego komunikatu:
type
EMojWyjatek
= class(Exception);
... {wykonanie
niezbΩdnych operacji}
on EMojWyjatek
do
MessageDlg('Wyst▒pi│ nieznany b│▒d!', mtError, [mbOK],
0);
To ju┐ wszystko co powinni╢cie
wiedzieµ o wyj▒tkach. Teraz nadszed│ czas, aby przedstawiµ Wam ich
typy:
Nazwa |
Opis |
EStringListError |
WystΩpuje
on podczas pracy z komponentem TStringList |
EOpenError |
Oznacza,
┐e nie mo┐na otworzyµ pliku z powodu jego braku lub/i
blokady. |
EInvalidImage |
Mo┐e byµ
spowodowany uszkodzeniem pliku. |
EWriteError |
Oznacz
niemo┐no╢µ zapisania do pliku danych. |
EReadError |
Oznacza
niemo┐no╢µ odczytania z pliku danych. |
EFCreateError |
B│▒d
przy tworzeniu pliku lub b│Ωdu podawania nazwy. |
ERegistryError |
B│▒d
podczas podczas pracy obiekt≤w zwi▒zanych z rejestrem. |
EPrinter |
Zwi▒zany
jest z b│Ωdem podczas drukowania. |
EOutOfMemory |
B│▒d ten
zwi▒zany jest z brakiem wystarczaj▒cej pamiΩci. |
EOutlineError |
WystΩpuje
podczas pracy z komponentem TOutline |
EMCIDeviceError |
B│▒d ten
zwi▒zany jest z komponenetem MediaPlayer. NastΩpuje po pr≤bie
odtworzenia pliku o nieprawid│owym formacie. |
EZeroDivide |
WystΩpuje
podczas pr≤by dzielenia liczby zmiennoprzecinkowej przez zero. |
EOverflow |
Oznacza
nadmiar liczb zmiennoprzecinkowych. |
EInvalidOperation |
Ten wyj▒tek
mo┐e byµ spowodowany przy pr≤bie przeci▒gani komponent≤w
(Drag). |
EInvalidGraphicOperation |
WystΩpuje
podczas niedozwolonej operacji graficznej. |
EInvalidGraphic |
Ten b│▒d
wystΩpuje podczas pr≤by za│adowania pliku, kt≤ry nie jest
plikiem graficznym. |
ERangeError |
Generowany
jest przy pr≤bie przypisania indeksu tabeli przekraczaj▒cej
jego przedzia│. |
EDviByZero |
Generowany
jest przy pr≤bie dzielenia liczby ca│kowitej prze zero. |
EExternalException |
Jest to
wyj▒tek, kt≤ry Delphi nie potrafi zakwalifikowaµ. |
EdbEditError |
WystΩpuje
podczas pr≤by wprowadzenia do pola TMaskEdit danych niezgodnych
z mask▒. |
EAbort |
Jest to
wyj▒tek, kt≤ry nie powoduje wy╢wietlenia stosownego
komunikatu. Jest to tzw. cichy wyj▒tek. Je┐eli wiΩc Ty nie
obs│u┐ysz tego wyj▒tku pozostaje on niezauwa┐ony dla u┐ytkownika. |
<TOP>