在Foreach循环中尝试Catch

本文关键字:Catch Foreach 循环 | 更新日期: 2023-09-27 18:13:18

写下面代码的最好方法是什么?

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.";
    }
}

我试图通过数据表迭代,并发送电子邮件到数据表中列出的不同的电子邮件,然后重定向到页面。在发送完数据表中的所有电子邮件后,执行成功。但是,如果邮件失败,我想显示标签lblSent。我只是不知道这是不是最好的办法。

在Foreach循环中尝试Catch

除此之外,您不应该捕获Exception类型。只捕获您知道如何处理的异常。你不能处理NullReferenceExceptionArgumentNullException,所以不要尝试。只捕获那些在发送电子邮件时可能抛出的异常。如SmtpExceptionFormatException(用于电子邮件地址格式错误)。