LibreOffice Basic

Kivételkezelés

A nyelvben nincsen klasszikus kivételkezelés, de van benne hibakezelés. Kivételeket nem tudunk dobni, de elkapni tudjuk őket, majd a vezérlést az alprogramon belül tetszőleges helyre irányíthatjuk, akár vissza a kivételt kiváltó sorra.

Szintaxis

A szintaxisa a következő:
on error goto [cimke] sortól kezdődően kapjuk el a kivételeket, ekkor a vezérlés a [cimke]: sorra ugrik. Itt változtathatunk a váltózók értékein, várakozhatunk, vagy amit jónak látunk azt tehetjük, például lezárhatjuk a nyitott fájlokat, majd goto vagy resume segítségével elugortatthatjuk a vezérlést innen.
Resume esetén a hibát kiváltó sorra ugrik vissza a vezérlés (könnyen végtelen ciklusba kerülhetünk, ha olyan hiba lép fel, amire nem számítottunk), resume next esetén a hibát kiváltó sor utáni sorra megy a vezérlés, ha az utasításaink kihagyhatóak, akkor érdemes ezt használni.
Az on error goto 0-al ki lehet kapcsolni a további hibakezelést, általánosan ajánlott figyelni, hogy hányszor léptünk már be a hibakezelő részbe. A hibakezelő rész elé még érdemes lehet tenni egy exit sub sort, hogy tényleg csak hiba esetén lépjünk be, különben finaly-ként használható.
Példa hibakezelésre:

sub HibaKezeles on error goto handler 'ha hiba lép fel ugorjon a handler címkére dim tomb(1) i=2 tomb(i)=9999999 'nincs neki 2-vel indexelhető eleme ez hibát dob msgbox tomb(i) exit sub 'ha hiba nélkül lefut akkor nem lép be a hibakazelő részbe handler: 'a hiba kezelő rész kezdete msgbox error$ 'kiírja a hiba okát i=0 'beállítja az i változót egy valid értékre on error goto 0 'többször nem lesz hibakezelés resume 'visszaugrik a hibát kiváltó sorra end sub