2011-01-24 113 views
0

在SWT/Jface應用程序中,如何向用戶正確顯示異常?我使用log4j來記錄異常,但我需要將消息顯示給用戶。在SWT中顯示異常

也許我可以使用與Eclipse中相同的消息框?但我不知道如何使用它。

問題是:如果發生多個異常,我想在一個唯一的消息框中列出所有異常,以便用戶只需單擊一次即可關閉該框。

提前致謝。

回答

0

挖掘到的代碼給我一個線索我想:

org.eclipse.core.runtime.SafeRunnerorg.eclipse.jface.util.SafeRunnable AR瞭解swt/jface如何處理異常是一個很好的起點。

這可能是這樣使用:

SafeRunner.run(new ISafeRunnable() { 
     public void run() throws Exception { 
      // code that throws exceptions... 
     } 
    }); 
1

你這樣做完全一樣,你會在任何其他GUI框架:

從不存在例外的用戶

OK,總之,處理機應用中的例外,如果可能的話。異常不是用戶消息的包裝。這是一個應用程序內部信號,說明某些東西壞了,應用程序無法繼續照常運行。消息和堆棧跟蹤應幫助開發人員或管理員找到並解決問題。

如果有什麼東西,可憐的用戶需要知道(因爲他可以改變一些事情,如檢查網絡連接),創建一個信息,那就是用戶(一個例外資格)理解並出示一個在消息框中。

給日誌文件和知道如何閱讀它們的人留下異常。


從另一個評論,我讀了你的意圖:在開發階段顯示更多細節。所以你需要開發和生產代碼的不同行爲。你想添加一些調試代碼,顯示錯誤的情況下更詳細的信息。

考慮實施應用程序範圍的服務,該服務需要消息並將其呈現給用戶。生產代碼的實現將只有呈現「用戶友好」(本地化?)消息,而用於開發目的的實現也顯示調試信息(完整錯誤消息)。

爲了使這個完美,您可以定義一個自定義的擴展點,並將「調試擴展」添加到您的用戶消息服務中的一個單獨的包中。所以如果你不安裝這個包,用戶將不會得到擴展的消息。

+0

我完全以同意你的觀點:用戶不需要知道這個問題的技術原因。所以我用自己的異常封裝了根異常。這些異常消息是唯一的,用戶友好。但是如果發生了幾個錯誤,我想在一個錯誤消息框中顯示它們。 – fluminis 2011-01-24 08:53:39

0

您可以使用MessageBox。

  
    MessageBox messageBox = new MessageBox(shell, SWT.ICON_ERROR); 
    messageBox.setMessage("error message"); 
    int result = messageBox.open(); 
    ... 

「如果超過一個例外發生,我想列出一個唯一的消息都異常」

爲什麼你要顯示例外用戶的列表?用戶只需要關於錯誤和消息的信息以避免或修復它。

你能發佈你想打包的異常列表還是提供更多信息?

+0

在開發過程中,帶有類似buton「顯示詳細信息」的消息框以及所有異常列表都可以幫助提高生產力。 – fluminis 2011-01-24 08:48:39