2008-11-13 104 views

回答

2

在物理層邊界。

也位於客戶端的頂級異常處理程序中。

I.e.如果您的業務層在服務器上運行,請在傳播到客戶端之前記錄異常。如果您將業務層作爲WCF Web服務公開,那麼這很容易,您可以實現一個錯誤處理程序,它在將SOAP錯誤傳播到客戶端之前進行日誌記錄。

1

如果拋出異常,應在發生異常時將其記錄下來,然後將其冒泡。否則,只有最終用戶應該記錄一個異常(當然可能有很多跟蹤,在這種情況下可能會記錄相當多)。

最終用戶可以是UI組件或服務或東西...

如果你在你的代碼處理異常的地方 - 然後是最終用戶,你應該有記錄它。在大多數應用程序中,並且在大多數情況下,UI應該在向用戶顯示錯誤消息時記錄它。

1

我通常會允許異常傳播並在達到最高級別時記錄它們。例如

main { 
    try { 
     application code 
    } catch { 
     preform logging 
    } 
} 

但這隻對致命的例外有意義。其他例外我通常將它們記錄在處理從所述異常中恢復的塊中。