Dessverre inkluderer byggeprogrammer koding. Uansett hvor nøye du skriver / feilsøker programmet ditt, vil det være umulig å forestille seg enhver situasjon som kan gå galt. Den uerfarne brukeren kan for eksempel prøve å åpne en ikke-eksisterende fil eller legge inn en dårlig verdi i et datafelt.
Brukere gjør feil, og vi bør være forberedt på å håndtere / forhindre disse feilene hvor og når det er mulig.
Feil, unntak?
Et unntak er vanligvis en feiltilstand eller en annen hendelse som avbryter den normale flyt av utførelse i en applikasjon. Hver gang det oppstår en feil fra behandlingen av en kodelinje, oppretter (reiser) Delphi et objekt etterkommer fra TObject kalt unntaksobjektet.
Vernede blokker
En applikasjon svarer på et unntak enten ved å utføre en viss termineringskode, håndtere unntaket eller begge deler. Måten å aktivere felle- / unntaksfangst innenfor en gitt kode, må unntaket skje innenfor en beskyttet blokk med uttalelser. Den generelle koden ser ut som:
prøve. {bevokt blokkblokk} unntatt. på begynner. {unntak blokk-håndterer SomeException} slutt; slutt;
EN prøv / unntatt uttalelse utfører uttalelsene i den beskyttede koden. Hvis uttalelsene kjøres uten at noen unntak blir reist, ignoreres unntaksblokken, og kontrollen sendes til utsagnet etter sluttnøkkelordet.
Eksempel:
... Zero: = 0; prøve. dummy: = 10 / Null; unntatt. på EZeroDivide do. MessageDlg ('Kan ikke dele med null!', MtError, [mbOK], 0); slutt;...
Beskytte ressurser
Når en del av koden anskaffer en ressurs, er det ofte nødvendig å sikre at ressursen frigjøres igjen (eller du kan få en hukommelsestap), uavhengig av om koden fullføres normalt eller blir avbrutt av et unntak. I dette tilfellet bruker syntaksen endelig søkeord og ser ut som:
{noen kode for tildeling av ressurser} prøve. {bevokt blokkblokk} endelig. {termineringsblokk - kode for gratis ressurser} slutt;
Eksempel:
... AboutBox: = TAboutBox. Lag (null); prøve. AboutBox. ShowModal; endelig. AboutBox. Utgivelse; slutt;...
Applikasjon. OnException
Hvis applikasjonen din ikke håndterer feilen som forårsaket unntaket, vil Delphi bruke sin standard unntakshåndterer - den vil bare dukke opp en meldingsboks. Du kan vurdere å skrive kode i OnException-hendelsen for TApplication-objekt for å felle feil på applikasjonsnivå.
Bryt på unntak
Når du bygger et program med unntakshåndtering, kan det hende du ikke vil at Delphi skal bryte med unntak. Dette er en flott funksjon hvis du vil at Delphi skal vise hvor et unntak har skjedd; Det kan imidlertid være irriterende når du tester din egen unntakshåndtering.
Få siste ord
Ideen med denne artikkelen er å gi deg en rask titt på hva unntak er. For ytterligere diskusjon om unntakshåndtering, vurder Om håndtering av unntak i Delphi unntakshåndtering, ved hjelp av et verktøy som Delphi Crash / Unntakshåndtering med feilrapportering og noen av følgende relaterte artikler: