我有以下异常
System.Threading.ThreadAbortException:线程正在中止。在 System.Net.UnsafeNclNativeMethods.OSSOCK.recv(IntPtr socketHandle, 字节* pinnedBuffer,Int32 len,SocketFlags socketFlags)
当代码尝试发送电子邮件时。
我最大的问题是,当发生这种情况时,它会阻止我的所有其余代码运行(这是一个asp.net站点),即使我在try catch中捕获异常并处理它。
代码执行foreach
循环并运行正常,直到遇到此异常,此时我在循环中捕获异常。循环然后退出,而foreach
中的其他项不循环。
if (entry.VatInvoiceRequested)
{
try
{
using (var email = new EntryVatReceiptEmail(entry.Id))
{
if (email.NeedReceipt)
{
email.SendEmail();
email.SendEntryChargeMail();
}
}
}
catch (Exception ex)
{
Logger.Log4NetLogger.Error("Error sending VAT invoice", ex);
}
log.Debug("Entry Handler - About to return from Process()");
}
现在,我希望调用最后一个日志行,但是在捕到异常时不会调用它。只是为了澄清,捕获中的日志记录正在工作并记录到日志中。
答案 0 :(得分:1)
ThreadAbortException在每次自动捕获后重新抛出,你只能在catch块中执行Thread.ResetAbort()。 但是不要这样做,如果你的线程被中止,你需要找到确切的原因。