Supponiamo che io ho le seguenti impostazioni:Delphi - Qual è l'ordine "corretto" per i blocchi eccetto e infine?
function ReadFile(f : TFilename) : Boolean;
var
fs : TFileStream;
begin
Result := False;
try
fs := TFileStream.Create(f, ...);
try
// read file ...
Result := True;
finally
FreeAndNil(fs);
end;
except
// handle exceptions ...
end;
end;
quali sono le implicazioni di avere il except
e finally
recepite? Ho visto molti post con entrambi i metodi, ma non ho visto una chiara spiegazione di quale sia appropriato in quali casi (penso ancora che sia curioso che nel precedente costrutto, il blocco finally
esegua dopo il except
bloccare!).
Ho anche visto post che suggeriscono che la combinazione di blocchi try..except
e try..finally
non è una buona idea. Come puoi evitarlo in situazioni in cui una routine genera un'eccezione come parte del normale funzionamento, come in alcune delle routine di Indy?
* "nel costrutto sopra, il blocco finally viene eseguito dopo il blocco tranne" * - Non è corretto. –