Ich würde grundsätzlich immer try..finally innerhalb von try..except benutzen...
Der Schutzblock steht ja auch bei SirRufo schon mit drin...
Delphi-Quellcode:
Function CDevice.storerSettings(name: string) : integer;
Var
i: integer;
f: file of TPSettingsFile;
s: TSettingsFile;
Begin
Try
storeSettings := -1;
If Not FileExists( name )
Then raise EInOutError.CreateFmt( 'File %s does not exists!', [name] );
If IsFileInUse( name )
Then raise EInOutError.CreateFmt( 'File %s is open!', [name] );
AssignFile(f, name);
Try
Rewrite(f);
s.magic := $537916;
//...usw.
Write(f, s);
Finally
Try
Closefile(f); // oder direkt in separater, abgesicherter Prozedur...
storeSettings := 0;
Except
Info + StandardExceptionHandling.... was auch immer...
storeSettings := -1;
End;
End;
Except
// Standard ExceptionHandling, was auch immer man möchte...
End;
End;
Ist halt immer die Frage wie detailiert braucht man ein ExceptionHandling... schließlich kann man das noch um einiges erweitern...