1

我有一個服務層在我MVC3應用程序,它起着除其他事項外存儲庫的作用,因爲我數據層和實際的網絡應用程序之間的層。我已將所有GetById方法編碼爲健壯,使用FirstOrDefault而不僅僅是首先,因爲該ID是通過URL傳遞的,不能保證是有效的ID。錄入邏輯和數據錯誤與ELMAH

我現在發現自己正在做的地方是FirstOrDefault,那麼只有在結果不爲空的情況下才能繼續。我想在事件爲空時記錄事件,然後繼續執行任何操作。現在,我已經在使用Elmah記錄未處理的異常,並且我在MVC3中異常處理等方面的經驗很少,但是它發生在我認爲使用簡單的First可能會更好,如果沒有找到實體,Elmah會記錄異常。

我應該如何看待這種情況下,在無效的ID是相當肯定的邏輯異常,但不是低水平的CLR異常?這與當有人被要求輸入一個Id並且沒有找到其搜索項的實體時不一樣,這是一個正常的邏輯結果。

回答

1

生成異常可能很昂貴。驗證用戶輸入的初始方法更加健壯。我建議使用日誌框架,如NLog(http://nlog-project.org)記錄一個無效的ID傳入的情況。

如果你想保留所有的日誌消息在Elmah ,那麼你可以決定直接寫Elmah的錯誤日誌而不是冒泡例外。

+0

我想我會直接去寫Elmah日誌。我不想要兩個日誌記錄基礎設施,即使我可以將它們置於一個看起來像一個。 – ProfK