Hibakezelés

From Apache OpenOffice Wiki
Jump to: navigation, search
Book.png


A hibák megfelelő kezelése az egyik legidőigényesebb feladat a programozásban. Az Apache OpenOffice Basic számos eszközt biztosít a hibakezelés leegyszerűsítésére.

Az On Error utasítás

Az On Error utasítás a hibakezelés alapja:

Sub Teszt
  On Error Goto Hibakezelo
  ' ... feladat végrehajtása, amely közben hiba történhet
  Exit Sub
  Hibakezelo: 
    ' ... hibakezelő kód
End Sub

Az On Error Goto Hibakezelo sor megadja, hogyan működjön az Apache OpenOffice Basic, ha hiba történik. A Goto Hibakezelo utasítás biztosítja, hogy az Apache OpenOffice Basic befejezi az aktuális programsort, és végrehajtja a Hibakezelo: kódot.

A Resume parancs

A Resume Next parancs folytatja a program futását a hibát okozó sor utáni sorban, miután a hibakezelő kód befejeződött:

ErrorHandler:
  ' ... hibakezelő kód
  Resume Next

A Resume Folytatas paranccsal megadhatjuk, honnan folytatódjon a program a hibakezelés után:

ErrorHandler:
  ' ... hibakezelő kód
  Resume Folytatas
 
Folytatas:
  ' ... a program itt folytatódik a hiba után

Ha azt akarjuk, hogy a program folytatódjon hibaüzenet nélkül, ha hiba történik, akkor használjuk a következő formátumot:

Sub Teszt
  On Error Resume Next
  ' ... feladat végrehajtása, amely közben hiba történhet
End Sub

Az On Error Resume Next parancsot körültekintően használjuk, mert a hatása globális.

Hibainformációk lekérdezése

Hibakezelésnél hasznos lehet, ha rendelkezünk a hiba leírásával, és tudjuk, miért és hol történt a hiba:

  • Az Err változó tartalmazza a történt hibák számát.
  • Az Error$ változó tartalmazza a hiba leírását.
  • Az Erl változó tartalmazza a sor számát, ahol a hiba történt.

A

 MsgBox "Hiba " & Err & ": " & Error$ & " (sor : " & Erl & ")"

utasítás megjeleníti egy üzenetablakban a hibainformációkat.

Documentation note.png Míg a VBA összefoglalja a hibaüzeneteket egy Err nevű statisztikai objektumban, az Apache OpenOffice Basic az Err<tt>, Error$</tt> és Erl változót biztosítja.

Az információk addig maradnak érvényesek, amíg a program egy Resume vagy On Error parancshoz nem ér, ahol az információk elvesznek.

Documentation note.png A VBA-ban az Err objektum Err.Clear metódusával lehet visszaállítani a hibainformációkat, ha hiba történik. Az Apache OpenOffice Basicben ezt az On Error vagy a Resume parancs végzi el.

Tippek a strukturált hibakezeléshez

A definíciós parancs (On Error) és a visszatérési parancs (Resume) is a Goto egyik változata.

Ha világosan felépített programot akarunk létrehozni, hogy elkerüljük a hibaüzenetek megjelenését, amikor ezt a struktúrát használjuk, ne használjunk ugróutasításokat anélkül, hogy nem figyelnénk meg azokat.

Az On Error Resume Next parancsot körültekintően kell használni, mert hatására a program nem jeleníti meg a hibaüzeneteket.

A legjobb, ha csak egyféle hibakezelést használunk egy programon belül – a hibakezelés legyen elkülönítve a tényleges programtól, és ne ugorjunk vissza az eredeti kódba, ha hiba történik.

Az alábbiakban példát láthatunk egy hibakezelési eljárásra:

Sub Pelda
  ' Hibakezelő megadása az eljárás elején 
  On Error Goto Hibakezelo   
    ' ... Ez a tényleges programkód
  On Error Goto 0            ' Hibakezelés kikapcsolása
    ' Vége a programnak
  Exit Sub
 
 ' Hibakezelés kezdőpontja
 Hibakezelo:                
   ' Ellenőrizzük, hogy egy várt hiba történt-e
    If Err = VartHibaSzama Then      
      ' ... Hiba feldolgozása
    Else 
      ' ... Figyelmeztetés nem várt hibára
    End If
 On Error Goto 0            ' Hibakezelés kikapcsolása 
End Sub

Ez az eljárás a hibakezelő megadásával kezdődik, amelyet a tényleges programkód követ. A programkód végén a hibakezelést kikapcsolja az On Error Goto 0 utasítás, és az eljárás befejeződik az Exit Sub paranccsal (ne tévesszük össze az End Sub paranccsal).

A program először ellenőrzi, hogy a hibaszám egy várt hibának felel-e meg (amelyet a VartHibaSzama állandónk tartalmaz), majd ennek megfelelően kezeli a hibát. Ha még egy hiba történik, a rendszer figyelmeztetést jelenít meg. Fontos, hogy ellenőrizzük a hibaszámot, hogy a nem várt hibákra fény derüljön.

Az On Error Goto 0 utasítás a kód végén alaphelyzetbe állítja a hibainformációkat (a hibakódot az Err rendszerváltozóban), így egy később előforduló hiba felismerhető lesz.


Content on this page is licensed under the Public Documentation License (PDL).
Personal tools