Hay dos puntos a notar.
Primero,
except y
finally son independientes uno de otro por lo que no puedes omitir uno de los dos si son necesarios ambos. Lo que tienes que hacer es anidar los bloques:
Código Delphi
[-]
with TDownloadUrl.Create(nil) do
try
URL := 'http://ianua.cele.unam.mx/roman/dummy.txt';
Filename := 'C:\Users\roman\Documents\dummy.txt';
try
ExecuteTarget(nil);
except
ShowMessage('No se puede descargar el archivo');
end;
finally
Free;
end;
Tal como lo tenías, el componente se destruirá sólo cuando haya una excepción.
Por otra parte, cuando ejecutas una aplicación desde el IDE y tienes activada la opción Stop on Delphi Exceptions:
la ejecución se detiene dos veces, en la excepción original y en la que pones tú. Puedes desactivar dicha opción pero, en todo caso, cuando ejecutes desde fuera del IDE, sólo se detendrá en tu excepción.
// Saludos