尝试抓住邮件问题

时间:2010-09-21 07:23:27

标签: asp.net-mvc

让我说我有这样的事情:

public ActionResult Test(SomeModel m)
{

    try
    {
        _db.SaveModel(m);

        SendMailToUser(m);
        RedirectToRoute("Something");
    }
    catch
    {
        return View();
    }

}

如果“SendMailToUser”失败,我遇到了如何处理这个问题。模型保存到数据库。如果邮件无法发送,我怎样才能继续?

/ M

2 个答案:

答案 0 :(得分:1)

public ActionResult Test(SomeModel m)
{

    try
    {
        _db.SaveModel(m);
        try
        {
            SendMailToUser(m);
        }
        catch
        {
            //do something
        }
        RedirectToRoute("Something");
    }
    catch
    {
        return View();
    }

}

答案 1 :(得分:1)

如果你只想从SendMailTouser(m)函数中吞下异常(如果抛出),你可以这样做:

public ActionResult Test(SomeModel m)
{
    try
    {
        _db.SaveModel(m);
    }
    catch
    {
        return View();
    }

    try
    {
        SendMailToUser(m);
    }
    catch { }
    finally
    {
        RedirectToRoute("Something");
    }
}

如果您希望在电子邮件发送失败时不保存模型,则应将两者包装在工作单元或事务块中,以便在电子邮件失败时回滚保存。