Zitat:
Wozu die ganzen Try-Except-Blöcke, wenn sie doch leer sind?
Die sollen doch leer sein. Mein Motto lautet: Geht was schief, dann bitte alles in den ErrorLog... Kann der nicht erstellt werden, dann bitte gar nichts machen.
Wenn etwas nicht so läuft wie ich es erwarte, dann habe ich alles an einer Stelle im ErrorLog, sehe ich keinen, dann konnte er wohl nicht erstellt werden.
Das ist ja auch durchaus legitim, aber dazu reichen einige wenige
Exception / Finally Blöcke. Außerdem umschließt du sehr viele Befehle mit
Exception Blöcken, bei denen es unmgölich ist, dass überhaupt eine
Exception auftritt.
Beim von Luckie schon angesprochenen kontraproduktivem Auslagern von
FreeAndNil
in eine extra Methode platzierst du beispielsweise einen leeren try..except Block, der niemals greifen kann. Deine StringList erzeugst du ja vorher schon in einem try..finally Resourcen-Schutzblock. Sprich: Die List ist auf jeden Fall erstellt, also kann
Free
gar nicht fehlschlagen. Dass
FreeAndNil
hier unnötigt ist, hat Luckie ja auch schon erwähnt. Konkret wäre dies die korrekte Herangehensweise:
Delphi-Quellcode:
SL := TStringList.Create;
try
// ..
finally
SL.Free;
end;
Andere Stelle:
EnumWindows. Darauf dass diese
API eine
Exception schmeißt, kannst du lange warten. Windows APIs besitzen einen Rückgabewert, der geprüft werden muss und schmeißen generell keine Exceptions (von seltenen CPU-Exceptions vielleicht mal abgesehen).
Dann sind an einigen Stellen die Resourcen-Schutzblöcke falsch positioniert. Die
ErrorLogExists
Funktion sollte beispielsweise eher so aussehen:
Delphi-Quellcode:
function ErrorLogExists: Boolean;
begin
Result := false;
if FileExists('ErrorLog.txt') then
begin
slLoad := TStringlist.Create;
try
slLoad.LoadFromFile('ErrorLog.txt');
strErrorLog := slLoad.Text;
Result := true;
finally
slLoad.Free;
end;
end;
end;
Also erst die StringList erzeugen und dann den Resourcen-Schutzblock mit
try
einleiten. Wichtig ist, dass das
Create
nicht mit im Block ist, sonst ist nicht garantiert, dass das
Free
im finally Block funktioniert.
Dieser Artikel könnte für dich auch noch interessant sein:
http://eurekalog.blogspot.de/2010/05...09-and_05.html