List := FQueue.LockList;
for I := 0 to List.Count - 1 do
begin
Mail := TIdMessageTaskman(List[I]);
FEventLogger.LogMessage( 'Mail' + Mail.ToString, EVENTLOG_INFORMATION_TYPE , 0, 2);
try
try
FidSmtp.Connect();
FidSmtp.Send(Mail);
except
on e: exception do
begin
FEventLogger.LogMessage('Error sending mail ' + e.ClassName + ', ' +
e.Message, EVENTLOG_ERROR_TYPE, 0, 2);
MarkMailExecution(Mail.TaskID, Mail.NotificationID, False, e.Message);
Continue;
end;
end;
finally
begin
if FidSmtp.Connected then
FidSmtp.Disconnect;
end;
end;
FEventLogger.LogMessage( 'after finally', EVENTLOG_INFORMATION_TYPE , 0, 2);
MarkMailExecution(Mail.TaskID, Mail.NotificationID, True, '');
FreeAndNil(Mail)
Jadi kode berikut berfungsi, tetapi segera setelah ada masalah dalam pengiriman email dan pengecualian muncul, layanan berhenti. Adakah cara agar saya dapat melanjutkannya dan melewati semua Antrean? Meskipun ada pesan yang error. Contoh error yang menghentikan layanan saya adalah ketika "Saya melampirkan" file yang tidak ada.
finally
memunculkan pengecualian. atau bahkan bagianexcept
. - person kobik   schedule 21.07.2015on E: ESpecifcException do
(Anda juga dapat memiliki beberapa pengecualian ini dalam blok kecuali). - person Disillusioned   schedule 21.07.2015