A Chrome programozási nyelv

Kivételkezelés



Szintaxis

A kivétel kezelésésre három különböző szerkezetet használhatunk ebben a programozási nyelvben.

Például:

try <code lines> except <your exception code> finally <your cleanup code> end;

Kivételek definiálása

Van lehetőség saját kivételek definiálására is, mégpedig úgy, hogy a kivétel osztályt a System.Exception ősosztályból kell származtatni.

Kivételek kiváltása

Lehetőség van kivétel kiváltására is a "raise" kulcsszóval. Lehet a nyelvbe beépített kivételt kiváltani, vagy akár saját kivételt is.

if MyObject = nil then raise new Exception('MyObject not initialized');

Kivételek kezelése

A try blokkban fellépő kivételeket az except blokkban lehet lekezelni. Csak az olyan típusú kivételek lesznek lekzezelve, amire írtunk külön lekezelő részt, azonban az Exception típussal az összes kívételt le lehet kezelni. A finally blokkban lévő utasítások minden féle képpen végrehajtódnak, attól függetlenül, hogy volt e kivétel a try blokkban vagy sem. Példa:

method TTestForm.OnClick(Sender: Object; ea: EventArgs); begin try fClickCount := fClickCount+1; //fNull.ToString(); //Divide(0); except on E:Exception do begin MessageBox.Show('Found an error: '+E.Message); end; finally fEdit.Text := fClickCount.ToString; end; end;

Kivételek terjedése

Ha a kívétel nincs lekezelve az aktuális blokkban akkor tovább terjed az őt tartalmazó blokkra, ha ott sincs lekezelve, akkor szintén tovább terjed az őt tartalmazó blokkra és így tovább egészen addig amíg a main függvényhez nem érünk, ha itt sincs lekezelve a kivétel akkor a program leáll.