Desværre inkluderer byggeprogrammer kodning. Uanset hvor omhyggeligt du skriver / debuger dit program, vil det være umuligt at forestille sig enhver situation, der kan gå galt. Den uerfarne bruger kan f.eks. Prøve at åbne en ikke-eksisterende fil eller indtaste en dårlig værdi i et datafelt.
Brugere begår fejl, og vi skal være parate til at håndtere / forhindre disse fejl, hvor og hvor det er muligt.
Fejl, undtagelser?
En undtagelse er generelt en fejltilstand eller en anden begivenhed, der afbryder den normale strøm af udførelse i en applikation. Hver gang en fejl skyldes behandling af en kodelinje, opretter (rejser) et objekt efterkommer fra TObject kaldet undtagelsesobjektet.
Beskyttede blokke
En applikation reagerer på en undtagelse enten ved at udføre en termineringskode, håndtere undtagelsen eller begge dele. Måden til at aktivere fejl / undtagelsesfangst inden for en given kode, skal undtagelsen forekomme inden for en beskyttet blok af udsagn. Den generelle kode ser ud:
prøve. {bevogt blok af kode} undtagen. on do begynde. {undtagelse blokering af håndtag SomeException} slutter; ende;
EN prøv / undtagen erklæring udfører udsagnene i den beskyttede kode. Hvis udsagnene udføres uden, at der er fremsat nogen undtagelser, ignoreres undtagelsesblokken, og kontrollen overføres til udsagnet efter slutordet.
Eksempel:
... Zero: = 0; prøve. dummy: = 10 / Nul; undtagen. på EZeroDivide do. MessageDlg ('Kan ikke divideres med nul!', MtError, [mbOK], 0); ende;...
Beskyttelse af ressourcer
Når et kodeksnit erhverver en ressource, er det ofte nødvendigt at sikre, at ressourcen frigives igen (eller du muligvis får en hukommelsestab), uanset om koden udfyldes normalt eller afbrydes af en undtagelse. I dette tilfælde bruger syntaks endelig søgeord og ser ud:
{nogle kode til tildeling af ressourcer} prøve. {bevogt blok af kode} endelig. {opsigningsblok - kode til gratis ressourcer} ende;
Eksempel:
... AboutBox: = TAboutBox. Opret (nul); prøve. AboutBox. ShowModal; endelig. AboutBox. Frigøre; ende;...
Ansøgning. OnException
Hvis din applikation ikke håndterer den fejl, der forårsagede undtagelsen, vil Delphi bruge sin standardundantagelseshåndterer - det vil bare poppe op en meddelelsesboks. Du kan overveje at skrive kode i OnException-hændelsen for TApplication-objekt for at fange fejl på applikationsniveau.
Afbryd undtagelser
Når du bygger et program med undtagelseshåndtering, ønsker du måske ikke, at Delphi bryder med undtagelser. Dette er en fantastisk funktion, hvis du vil have, at Delphi skal vise, hvor en undtagelse er sket; det kan dog være irriterende, når du tester din egen undtagelseshåndtering.
Få sidste ord
Idéen med denne artikel er at give dig bare et hurtigt kig på, hvad undtagelser er. For yderligere diskussion om undtagelseshåndtering, overvej Om håndtering af undtagelser i Delphi undtagelseshåndtering, ved hjælp af et værktøj som Delphi Crash / Undtagelseshåndtering med bugrapportering og nogle af følgende relaterede artikler: