簡體   English   中英

WPF 應用程序的異常處理

[英]Exception handling for WPF Application

我有一個基本的 WPF 應用程序設置如下:視圖、視圖模型、業務對象和 Dals,帶有 SQL 緊湊型數據庫。 數據庫調用是通過 Linq2Sql 進行的。 應用程序是單用戶。 (每個用戶一個 db)。

假設在 CRUD 操作期間 Dal 內部發生異常或用戶刪除了數據庫,那么異常處理應該發生在哪里。

此外,如果出於某種原因在 View/ViewModel 中引發異常,我不希望系統崩潰。 我該如何處理。 我是否應該只通知用戶發生錯誤並重新創建 View/ViewModel 以便用戶可以繼續。 ViewModel 僅通過消息傳遞與其他 ViewModel 通信(例如,需要刷新某些內容)。

在您的 WPF 應用程序的OnStartup()方法中,您可以訂閱Application.Current.DispatcherUnhandledException異常事件,該事件允許您記錄異常,通知用戶異常並建議任何適當的補救措施,並取消應用程序的終止通過設置e.Handled = true

只有在可以糾正異常原因的情況下,您才應該取消終止應用程序,否則您可能會將應用程序留在未定義的 state 中。

最簡單的答案是它真的取決於應用程序的確切要求。

詳細信息:首先,您應該在有可能發生特殊情況的情況下進行特殊處理。 在執行 CRUD 操作時,在視圖 model 中執行某些操作時,甚至在創建視圖時。 用戶絕對不希望應用程序崩潰。 所以最好的辦法是處理異常,自定義錯誤消息,使其對用戶有意義並將其顯示給用戶,以便她/他知道發生了錯誤。 還詢問用戶現在要做什么(這實際上再次取決於應用程序要求),但例如如果數據庫文件已被刪除,請詢問用戶是否要創建一個新文件或類似的東西

數據庫問題應該在你的 dal 中處理,dal 應該通知某人有關消息/事件的問題。

視圖/視圖模型的異常應該在這個類中捕獲,除非你有一些像 caliburn 這樣的 mvvm 框架,它可以獨立地處理這些東西。 捕獲異常后,應將消息發送到將處理問題的外殼/視圖管理器。

暫無
暫無

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

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