Fejlhåndtering

Tags:    delphi

Er der noget der hedder fejlhåndtering i Delphi ?
Hvordan laves det ?
Findes der sådan en general fejlhåndtering ?
Hvordan se den ud ?

tarsankode



2 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Er der noget der hedder fejlhåndtering i Delphi ?
Hvordan laves det ?
Findes der sådan en general fejlhåndtering ?
Hvordan se den ud ?

tarsankode


Du kan slå exception handling op i hjælpen og læse lidt mere om det, men kort fortalt så pakker du din kode ind i nogle try-except/try-finally blokke for at håndtere evt. fejl. Try-except bruges når man vil fange en eller flere konkrete exceptions og try-finally bruges når man bare behov for at være sikker på at nogle ressourcer bliver frigivet uanset hvad der sker.

Et lille hurtigt eksempel på try-except:

<pre>
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
try
i := StrToInt(Edit1.Text);
ShowMessage(IntToStr(i));
except
on EConvertError do
ShowMessage('Edit1 skal indeholde et heltal');
end;
end;
</pre>

Her vil teksten i Edit1 blive vist med ShowMessage når man trykker på Button1 og såfremt det ikke er et heltal vil der blive vist en fejlmeddelse.

Et lille hurtigt eksempel på try-finally:

<pre>
procedure TForm1.Button1Click(Sender: TObject);
var
f: TextFile;
begin
AssignFile(f, 'c:\\test.txt');
try
Append(f);
WriteLn(f, 'blabla');
finally
CloseFile(f);
end;
end;
</pre>

Ovenstående åbner test.txt og skriver en enkelt linje til sidst i filen og lukker filen igen. Hvis nu ikke filen findes eller man ikke har skriverettigheder til den vil den alligevel blive lukket, hvormed man undgår at ens program lækker ressourcer, hvilket det ellers ville gøre hvis man undlod at bruge try-finally.



Er der noget der hedder fejlhåndtering i Delphi ?
Hvordan laves det ?
Findes der sådan en general fejlhåndtering ?
Hvordan se den ud ?

tarsankode

Du kan slå exception handling op i hjælpen og læse lidt mere om det, men kort fortalt så pakker du din kode ind i nogle try-except/try-finally blokke for at håndtere evt. fejl. Try-except bruges når man vil fange en eller flere konkrete exceptions og try-finally bruges når man bare behov for at være sikker på at nogle ressourcer bliver frigivet uanset hvad der sker.

Et lille hurtigt eksempel på try-except:

<pre>
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
try
i := StrToInt(Edit1.Text);
ShowMessage(IntToStr(i));
except
on EConvertError do
ShowMessage('Edit1 skal indeholde et heltal');
end;
end;
</pre>

Her vil teksten i Edit1 blive vist med ShowMessage når man trykker på Button1 og såfremt det ikke er et heltal vil der blive vist en fejlmeddelse.

Et lille hurtigt eksempel på try-finally:

<pre>
procedure TForm1.Button1Click(Sender: TObject);
var
f: TextFile;
begin
AssignFile(f, 'c:\\test.txt');
try
Append(f);
WriteLn(f, 'blabla');
finally
CloseFile(f);
end;
end;
</pre>

Ovenstående åbner test.txt og skriver en enkelt linje til sidst i filen og lukker filen igen. Hvis nu ikke filen findes eller man ikke har skriverettigheder til den vil den alligevel blive lukket, hvormed man undgår at ens program lækker ressourcer, hvilket det ellers ville gøre hvis man undlod at bruge try-finally.


MANGE TAK ! Lasse

tarsankode



t