让我说我有这样的事情:
public ActionResult Test(SomeModel m)
{
try
{
_db.SaveModel(m);
SendMailToUser(m);
RedirectToRoute("Something");
}
catch
{
return View();
}
}
如果“SendMailToUser”失败,我遇到了如何处理这个问题。模型保存到数据库。如果邮件无法发送,我怎样才能继续?
/ M
答案 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");
}
}
如果您希望在电子邮件发送失败时不保存模型,则应将两者包装在工作单元或事务块中,以便在电子邮件失败时回滚保存。