在SWT/Jface應用程序中,如何向用戶正確顯示異常?我使用log4j來記錄異常,但我需要將消息顯示給用戶。在SWT中顯示異常
也許我可以使用與Eclipse中相同的消息框?但我不知道如何使用它。
問題是:如果發生多個異常,我想在一個唯一的消息框中列出所有異常,以便用戶只需單擊一次即可關閉該框。
提前致謝。
在SWT/Jface應用程序中,如何向用戶正確顯示異常?我使用log4j來記錄異常,但我需要將消息顯示給用戶。在SWT中顯示異常
也許我可以使用與Eclipse中相同的消息框?但我不知道如何使用它。
問題是:如果發生多個異常,我想在一個唯一的消息框中列出所有異常,以便用戶只需單擊一次即可關閉該框。
提前致謝。
挖掘到的代碼給我一個線索我想:
類org.eclipse.core.runtime.SafeRunner和org.eclipse.jface.util.SafeRunnable AR瞭解swt/jface如何處理異常是一個很好的起點。
這可能是這樣使用:
SafeRunner.run(new ISafeRunnable() {
public void run() throws Exception {
// code that throws exceptions...
}
});
你這樣做完全一樣,你會在任何其他GUI框架:
從不存在例外的用戶
OK,總之,處理機應用中的例外,如果可能的話。異常不是用戶消息的包裝。這是一個應用程序內部信號,說明某些東西壞了,應用程序無法繼續照常運行。消息和堆棧跟蹤應幫助開發人員或管理員找到並解決問題。
如果有什麼東西,可憐的用戶需要知道(因爲他可以改變一些事情,如檢查網絡連接),創建一個信息,那就是用戶(一個例外不資格)理解並出示一個在消息框中。
給日誌文件和知道如何閱讀它們的人留下異常。
從另一個評論,我讀了你的意圖:在開發階段顯示更多細節。所以你需要開發和生產代碼的不同行爲。你想添加一些調試代碼,顯示錯誤的情況下更詳細的信息。
考慮實施應用程序範圍的服務,該服務需要消息並將其呈現給用戶。生產代碼的實現將只有呈現「用戶友好」(本地化?)消息,而用於開發目的的實現也顯示調試信息(完整錯誤消息)。
爲了使這個完美,您可以定義一個自定義的擴展點,並將「調試擴展」添加到您的用戶消息服務中的一個單獨的包中。所以如果你不安裝這個包,用戶將不會得到擴展的消息。
您可以使用MessageBox。
MessageBox messageBox = new MessageBox(shell, SWT.ICON_ERROR); messageBox.setMessage("error message"); int result = messageBox.open(); ...
「如果超過一個例外發生,我想列出一個唯一的消息都異常」
爲什麼你要顯示例外用戶的列表?用戶只需要關於錯誤和消息的信息以避免或修復它。
你能發佈你想打包的異常列表還是提供更多信息?
在開發過程中,帶有類似buton「顯示詳細信息」的消息框以及所有異常列表都可以幫助提高生產力。 – fluminis 2011-01-24 08:48:39
我只能支持Andreas_D和yeraycaballero的答案。如果您向他展示異常,用戶只會感到困惑。
這裏如何使用SWT消息框又如: http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/DemonstratestheMessageBoxclass.htm
您還可以找到Eclipse官方API文檔中的有用信息: http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/MessageBox.html
我完全以同意你的觀點:用戶不需要知道這個問題的技術原因。所以我用自己的異常封裝了根異常。這些異常消息是唯一的,用戶友好。但是如果發生了幾個錯誤,我想在一個錯誤消息框中顯示它們。 – fluminis 2011-01-24 08:53:39