簡體   English   中英

3層應用程序的異常捕獲最佳實踐

[英]Exception Catching Best Practices on 3 Tier Application

我有一個跟隨3層的WCF:

  1. 服務
  2. BLL
  3. DLL。

有誰可以請幫助我:

在以下場景中,上述哪一層是捕獲和記錄異常的最佳位置:

場景1:

DLL上發生異常。

場景:2:

BLL上發生異常。

另外,我是否總是總是在Try and Catch上從Service中包含對BLL的調用?

這取決於你的系統,但我會在BLL中記錄異常。 並提醒你“登錄”不要抓住! 那就是 - 在捕獲結束時將進行重新拋出!

我根本沒有抓到任何服務 - 這只是為了與客戶溝通 - 不需要在其中放置任何邏輯恕我直言。

當然:抓住你拋出的預期異常,然后讓那些未被發現的通行證。

例如:場景1 - 可能捕獲SqlExceptions,嘗試處理它們,如果沒有將它們包裝在某些DAL-Exception中並拋出它們。 場景2 - 可能從第3層捕獲DAL-Exceptions,看看你是否可以處理它們或再次包裝它們,...

恕我直言,處理,記錄和靜音各種未預料到的異常( catch (Exception) )幾乎絕不是一個好主意 - 在這之后應用程序狀態將非常不確定。

閱讀MSDN上有關Microsoft異常處理塊的一些文章

它經歷了很多場景,並為您提供了一些關於異常處理策略最佳實踐的好主意,無論您是否使用異常處理塊,如下圖所示。

在此輸入圖像描述

暫無
暫無

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

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