ON ERROR-käskyllä voidaan määritellä, mitä ohjelma tekee virhetilanteen ilmentyessä (esim. jako nollalla tai ylivuoto).
ON ERROR (GOTO rivi|nimiö) (nimiö:) [käskylohko] (RESUME [NEXT])
ON ERROR-käskyn osat ja niiden tehtävät:
Pakolliset osat | Tehtävä | |||
GOTO rivi|nimiö | Rivin numero tai nimiön nimi, johon ohjelma siirtyy virherilanteen sattuessa | |||
RESUME | Ohjelma jatkaa virhetilanteen selvityksen jälkeen suoritustaan riviltä, jolla virhe tapahtui | |||
Vapaaehtoiset osat | Tehtävä | |||
käskylohko | mikä tahansa QBasicin lause (tai useampi lause) | [tr] | NEXT (RESUMEn jälkeen) | Ohjelma jatkaa suoritustaan virhettä seuraavalta riviltä |
Esimerkki:
CLS ON ERROR GOTO virhetilanne ' Ohjelma jatkaa suoritustaan nimiöstä virhetilanne, jos ohjelman suorituksessa tapahtuu virhe jakaja = 0 a = 50 / jakaja ' Aiheutetaan nollallajakovirhe CHDIR "a:\" ' Yritetään muuttaa oletushakemisto a:ksi (levykeasema) ERROR 16 ' Aiheutetaan virhe numero 16 (kaava liian monimutkainen) END virhetilanne: SELECT CASE ERR CASE 11 ' 11 on nollalla jakamisen virhekoodi CLS INPUT "Nollalla ei voi jakaa, joten anna uusi jakaja: ", jakaja ' Korjataan virhetilanne kysymällä uutta jakajaa RESUME ' Palataan takaisin kohtaan, jossa virhe tapahtui CASE 71 ' 71 on virhekoodi tapahtumalle levyke ei ole valmiina CLS PRINT "A-asemassa ei ole levykettä" ' Annetaan ilmoitus levykkeen puuttumisesta SLEEP RESUME NEXT ' Ilmoituksen jälkeen jatketaan virhetilannetta seuraavalta riviltä CASE ELSE ' Jos mikään aiemmista virheenkorjausyrityksistä ei onnistu... CLS PRINT "Ohjelmassa tapahtui täysin odottamaton virhe, ja ohjelma lopetetaan" END ' ...ohjelma joudutaan lopettamaan END SELECT
Muuta aiheeseen liittyvää:
Ajonaikaiset virhekoodit, ERROR, ERR