簡體   English   中英

Breeze EF6 SaveChanges不傳播異常

[英]Breeze EF6 SaveChanges doesn't propagate exceptions

在EFContextProvider(EF6)SaveChangesCore方法中,異常處理如下所示:

} catch (Exception e) {
while (e.InnerException != null) {
e = e.InnerException;
}
throw e;
}

這僅引發最內部的異常,並隱藏外部異常揭示的相關信息。

當SaveChanges流程遍歷多個層時,下一個直接層異常將丟失,並且僅拋出鏈中的最后一個異常。 它不允許很好地處理調用方的異常。

更新的帖子

從Breeze 1.4.6版本開始,任何異步微風結果的httpResponse.data屬性中都可以使用原始格式在服務器上引發的任何.NET異常。 Breeze仍會深入挖掘以提取“良好”錯誤消息,但不會再掩蓋最初的異常。

下面的原始帖子-------------------

這是一個有趣的觀點。 我們這樣做的原因是因為大多數客戶端應用程序不是為在異常鏈中導航而編寫的,我們希望向客戶端公開最“相關”的錯誤。 我們查看的大多數應用程序都只是直接暴露了客戶端的“ error.message”屬性,而由於存在EF錯誤,這幾乎總是無用的。

但是,您的觀點是正確的。 我認為我們需要做的是創建一個新的Exception,它具有最頂層的消息,該消息是最內部的異常消息,但仍向希望鑽取的對象公開整個異常鏈。 我為此添加了一個內部功能請求,並將嘗試將其發布到近期版本中(可能不是下一個版本,因為我們已經在測試該版本了)。

並感謝您的投入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM