尝试在Foreach循环内捕获

时间:2013-05-13 23:21:28

标签: 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 MessageSent(Boolean IsSuccesful)
{
    if (IsSuccesful)
    {
        Response.BufferOutput = true;
        Response.Redirect("~/Page.aspx");
    }
    else
    {
        lblSent.Text = "Email has failed.";
    }
}

我正在尝试遍历数据表并向数据表中列出的不同电子邮件发送电子邮件,然后在数据表中的所有电子邮件发送完成后重定向到Page.aspx。但是,如果电子邮件失败,我想显示标签lblSent。我只是不知道这是否是最好的方法。

1 个答案:

答案 0 :(得分:0)

除此之外,您不应该捕获Exception类型。只捕获您知道如何处理的异常。您无法处理NullReferenceExceptionArgumentNullException,因此请勿尝试。仅捕获发送电子邮件时可能抛出的异常。诸如SmtpExceptionFormatException之类的内容(针对电子邮件地址格式错误)。