2010-09-21 103 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(); 
    } 

}