2010-09-21 102 views
0

可以说我有这样的事情:尝试捕捉与邮件问题

public ActionResult Test(SomeModel m) 
{ 

    try 
    { 
     _db.SaveModel(m); 

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

} 

而且我得到了与HOWTO处理问题,这一点,如果“SendMailToUser”失败。模型被保存到数据库。如果邮件无法发送,我怎么才能让它继续?

/M

+0

如果邮件发送失败,您希望发生什么?错误应该被忽略吗? – 2010-09-21 11:02:22

回答

1

如果你只是想从SendMailTouser(m)功能吞下异常(如果抛出),你可以这样做:

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

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

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

1
public ActionResult Test(SomeModel m) 
{ 

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

}