gpt4 book ai didi

delphi - 尝试 except 停止服务执行

转载 作者:行者123 更新时间:2023-12-03 19:51:23 26 4
gpt4 key购买 nike

  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)

所以下面的代码可以工作,但是一旦发送电子邮件出现问题并引发异常,服务就会停止。有没有办法让它继续并通过所有队列?即使有错误的消息。例如,停止我的服务的错误是当“我附加”一个不存在的文件时。

最佳答案

你说你已经确认你进入了终于部分。所以有3种可能:

  • 中的一行代码终于部分阻止代码继续。
  • 中引发了另一个异常。终于部分。
  • 当您输入终于部分,您已经处于“异常状态”。所以离开终于将您带到调用堆栈中的下一个 finally/except 部分。

  • 您必须添加调试日志来确认哪个,但我怀疑第 3 个。现有异常状态的可能触发器:
  • 您的 Mail实例无效,并且您的吞咽者发现了访问冲突。当您再次尝试使用 Mail除了 部分,您会遇到另一个访问冲突。
  • MarkMailExecution 内的东西触发自己的异常。
  • (我假设您的日志记录机制没有失败,因为您已经从中获取了一些信息。)
  • 关于delphi - 尝试 except 停止服务执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31535384/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com