C# 在Foreach循环中尝试捕捉
编写以下代码的最佳方法是什么:C# 在Foreach循环中尝试捕捉,c#,asp.net,C#,Asp.net,编写以下代码的最佳方法是什么: foreach (DataRow row in table.Rows) { try { SendEmail(emailadress); //method that will send emails MessageSent(true); } catch (Exception) { MessageSent(false); break; } } void
foreach (DataRow row in table.Rows)
{
try
{
SendEmail(emailadress); //method that will send emails
MessageSent(true);
}
catch (Exception)
{
MessageSent(false);
break;
}
}
void MessageSent(Boolean IsSuccesful)
{
if (IsSuccesful)
{
Response.BufferOutput = true;
Response.Redirect("~/Page.aspx");
}
else
{
lblSent.Text = "Email has failed.";
}
}
我正在尝试遍历一个datatable并向datatable中列出的不同电子邮件发送一封电子邮件,然后在datatable中的所有电子邮件发送完毕后,成功重定向到Page.aspx。但是,如果电子邮件失败,我想显示标签lblSent。我只是不知道这是不是最好的方法 除此之外,您不应该捕获
异常
类型。只捕获您知道如何处理的异常。您无法处理NullReferenceException
或ArgumentNullException
,因此不要尝试。仅捕获发送电子邮件时可能抛出的异常。类似于SmtpException
或FormatException
(用于电子邮件地址格式错误)。您尝试过什么吗?发生了什么事?它工作得很好,但我想知道是否有更有效的方法来写这个。我还是个新手。你为什么不把目标电子邮件排好队,然后发送一次呢?我觉得这比将电子邮件发送到每个单独的地址要有效得多。我觉得这些代码很好。您可能希望在try/catch之外调用MessageSent,这样在它引发异常时就不会感到困惑。您可以使用布尔变量来跟踪发送是否成功。