Strona g│≤wna

 

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>