prøv, fang, kast: når noe går galt
Feilhåndtering i Norscode er en tydelig del av flyten, ikke noe du oppdager når det smeller.
Ingen kode møter bare den perfekte dagen. Fila finnes ikke, nettverket svarer ikke, brukeren skrev noe rart. Spørsmålet er ikke om noe går galt, men om koden din har bestemt hva som skal skje når det gjør det.
Tre ord
Norscode bruker prøv, fang og kast. Du prøv-er noe som kan feile; går det galt, fang-er du feilen og bestemmer hva som skjer; og du kan selv kast-e en feil når det ikke gir mening å fortsette. Ordene er norske, og flyten leses som en setning.
Feil som er synlige
I mange språk er det lett å la en feil gli forbi i det stille, til den dukker opp et helt annet sted mye senere. Når feilhåndteringen er en tydelig blokk i koden, ser den som leser at «her kan noe gå galt, og her er hva vi gjør». Det gjør programmet lettere å forstå, og lettere å stole på.
Ikke alt bør fanges
En god regel er å bare fange det du faktisk kan gjøre noe med. Kan du ikke rette opp, er det ofte bedre å la feilen boble opp til noen som kan — enn å skjule den bak en tom blokk. Norscode gjør begge deler enkelt, men gjør det synlig hva du valgte.
Feilhåndtering er ikke det morsomme å skrive. Men det er ofte forskjellen på et program som tåler en dårlig dag, og et som ikke gjør det.
Et lite eksempel
Si at du skal lese en fil som kanskje ikke finnes. I stedet for å la programmet krasje, pakker du forsøket inn:
prøv {
la innhold = fil.les("data.txt")
skriv(innhold)
} fang (e) {
skriv("Kunne ikke lese fila")
}prøv-blokka kjøres, og går noe galt, hopper kjøringen rett til fang, der du bestemmer hva som skal skje. Programmet fortsetter i stedet for å stoppe brått, og den som leser koden ser tydelig hvor det kan gå galt og hva svaret er.
Kast når noe ikke gir mening
Noen ganger er det riktige å stoppe. Oppdager funksjonen din en tilstand den ikke kan fortsette fra, kan den selv kast-e en feil, som en blokk lenger ute kan fange. Slik lar du feil boble oppover til det stedet som faktisk vet hva som bør gjøres, i stedet for å gjette lokalt.
En god regel
Fang bare det du kan gjøre noe med. Kan du ikke rette opp, er det ofte bedre å la feilen gå videre enn å skjule den bak en tom blokk der den forsvinner sporløst. Norscode gjør begge deler enkelt — men gjør det synlig i koden hva du valgte, så neste leser slipper å gjette.
Les også
- Nytt nettsted for språketnorscode.no handler nå om programmeringsspråket, med dokumentasjon, eksempler og nedlastinger.
- Hvorfor kjøretiden sier neiEn kort forklaring av kapabilitetsmodellen, og hvorfor den er slått på fra første stund.
- Kompilatoren bygger seg selvNorscode er selvhostende: verktøykjeden er skrevet i språket den kompilerer.