1

我正在編寫GUI應用程序,用於在公司的會計軟件和電子商務系統(互聯網商店)之間交換和同步數據。我在哪裏可以處理MVC Java中的異常?

我想使用MVC(模型 - 視圖 - 控制器)設計模式來創建它。

我的應用程序的一部分是用會計軟件覆蓋電子商務庫存餘額的功能。

我有

  1. 視圖 - JDialog的呈現覆蓋的進度。
  2. 控制器 - 負責數據庫的視圖和互動
  3. 模式 - 當我排隊的數據庫,我必須捕捉異常(ClassNotFound的和SQL),星展銀行和應用程序的設置

數據。

我應該在哪裏創建try {} catch {} block?在視圖?或在控制器?
我想給出一些帶有錯誤信息的JOptionPane並完成一些應用程序狀態。

+0

我想'試穿catch'塊應該被使用,其中的問題的真正原因在於,可以幫助你在最早的腳出了問題,而不是拋出,有的地方趕上他們其他。此外,最好在[Log4J](http://logging.apache.org/log4j/2.x/)的幫助下進行日誌記錄,即使用戶錯過了錯誤消息,他們也可以檢查它然後從相應的文件中刪除:-) – 2012-07-16 14:46:21

回答

3

你已經提到了只有檢查過的異常。

  1. 您不需要捕捉異常。您可以選擇聲明它。
  2. 如果你不想聲明它,你可以包裝它在RuntimeException
  3. 模型中的所有異常都應在代碼中的單個位置處理(所謂的異常屏障),並以統一的方式呈現給Controller。財務主任的主要興趣在於該業務是否成功,對其失敗原因的有趣細節不感興趣。
  4. 不建議使用Spring的聲明式事務處理,連接池等編寫DAO層(用於數據庫通信)。
+0

感謝您的重播! 但我不知道春天。 我想知道什麼是異常的原因。 MySQL連接出現問題,或者可能與Pervasive連接有關。 – 2012-07-16 10:46:27

2

這是一個棘手的問題,並且會涉及到如何構造代碼。一般來說,如果可以的話,讓模型拋出異常,以使視圖能夠處理它。這從你的視圖中分離出你的模型。

在這種事情是不可能的情況下會有場合(如使用JTables或JLists)。在這些情況下,如果可能的話,分別加載「模型數據」(處理任何錯誤),然後將其傳遞給控件(JTable/JList)模型。

但是,您可能會遇到使用標準模型(例如表模型)的情況,並且您正在從單獨的模型(例如結果集等)讀取數據(僅舉例) - 因爲性能得到改善或者曾經有過),其中模型將呈現爲試圖處理異常的任務。

在這種情況下,我只能建議你提供你的模型具有某種錯誤處理程序/偵聽器能夠報告錯誤回到UI的。如果可以的話,我們有一個界面,如果需要的話,這將允許您將視圖/模型分離。

只是一些想法