Difference between revisions of "HU/Documentation/BASIC Guide/Error Handling"
Timarandras (Talk | contribs) (New page: {{HU/Documentation/BASICGuideTOC/v2 |ShowPrevNext=block |ShowPrevPage=block |PrevPage=HU/Documentation/BASIC Guide/Procedures and Functions |NextPage=HU/Documentation/BASIC Guide/Other Ins...) |
|||
Line 74: | Line 74: | ||
utasítás megjeleníti egy üzenetablakban a hibainformációkat. | utasítás megjeleníti egy üzenetablakban a hibainformációkat. | ||
− | {{ | + | {{Note|Míg a VBA összefoglalja a hibaüzeneteket egy <tt>Err</tt> nevű statisztikai objektumban, az {{OOo}} Basic az <tt>Err<tt>, </tt>Error$</tt> és <tt>Erl</tt> változót biztosítja.}} |
Az információk addig maradnak érvényesek, amíg a program egy <tt>Resume</tt> vagy <tt>On Error</tt> parancshoz nem ér, ahol az információk elvesznek. | Az információk addig maradnak érvényesek, amíg a program egy <tt>Resume</tt> vagy <tt>On Error</tt> parancshoz nem ér, ahol az információk elvesznek. | ||
− | {{ | + | {{Note|A VBA-ban az <tt>Err</tt> objektum <tt>Err.Clear</tt> metódusával lehet visszaállítani a hibainformációkat, ha hiba történik. Az {{OOo}} Basicben ezt az <tt>On Error</tt> vagy a <tt>Resume</tt> parancs végzi el. }} |
== Tippek a strukturált hibakezeléshez == | == Tippek a strukturált hibakezeléshez == |
Latest revision as of 06:53, 7 July 2018
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.
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.
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). |