2010-12-16 36 views
2

解決!感謝所有的快速答案,問題是,我認爲,如果你發現一個異常,你仍然必須添加拋出異常的標題 ^^非常愚蠢的我,再次感謝! ------------------------------------ ORIGINAL POST ------- 您好, 我有一個方法load(),這個方法拋出IOException異常。 我試圖使這個:使用actionPerformed失敗,因爲其中的方法可能會拋出異常

public void actionPerformed(ActionEvent e){ 
     if(e.getActionCommand().equals("Load")){ 
      load(); 
     } 
    } 

的問題是,我要補充拋出IOException異常到的actionPerformed,但如果我這樣做。我得到一個錯誤:「這個類沒有聲明爲抽象的或不覆蓋public void actioPerformed()

+0

一旦你得到答案,不要改變你的問題。答案不再有意義。如果您必須編輯您的問題,請將其發佈在底部的編輯行或其他東西下。 – Falmarri 2010-12-16 20:01:51

+0

@ user545236和@Falmarri,回答你自己問題的被接受的做法是發佈一個實際的答案,而不是編輯原始問題。問題編輯應該是澄清,增加更多信息(例如示例代碼)等等...... – 2010-12-16 20:37:23

回答

2

因此,如果load引發IOException,您需要計算出想要發生的情況。方法致電actionPerformed不期望IOException,所以它不可能處理它。

你能處理它嗎?通過顯示錯誤消息並讓用戶再試一次?如果是這樣,請在actionPerformed中輸入一個try/catch塊,並以此方式處理。

如果你不能,你可能會捕捉異常並將其包裝在RuntimeException。這通常是處理例外的一種相當苛刻的方式,但在某些情況下,這是最好的方法。 Swing會捕獲異常並將其記錄下來,所以在這種情況下它可能沒有多大的幫助......但是您也許可以更改該默認行爲。

+0

在Swing中,有一個未捕獲的異常處理程序,並且RuntimeException將最終記錄到控制檯。 – Anon 2010-12-16 19:37:31

+0

@Anon:謝謝,會編輯解釋一下。 – 2010-12-16 19:38:35

0

你可能需要拋出IOException,或者包圍方法(大概getActionCommand()?) try/catch語句

+0

OP在他的問題中說'l​​oad()'是拋出IOExceptions的方法。 – Tim 2010-12-16 19:36:12

+0

你說得對。我誤解了它,答案仍然適用。 – Falmarri 2010-12-16 20:02:12

1

有沒有你不能簡單地圍繞調用load()try有原因的 - catch塊,例如:?

public void actionPerformed(ActionEvent e) { 
    if(e.getActionCommand().equals("Load")) { 
     try { 
      load(); 
     } catch(IOException e) { 
      // Handle the error here 
     } 
    } 
}

這是假設你有一些行爲可以執行,如果load()失敗。什麼是load()呢?如果無法加載,應用程序應該做什麼?

+0

我喜歡這個:) – davs 2012-11-20 09:50:11

0

您必須考慮如何在actionPerformed()的範圍內處理IOException

一種方法是使用try/catch塊,並在catch中顯示一個對話框,告訴用戶出錯了。如果你能把異常轉化爲有意義的東西,那麼更好,如果你能給用戶某種方式從問題中恢復,那麼最好。順便說一句,如果你正在做一些長時間運行的IO操作,你不應該在事件調度線程上做 - 它會導致GUI的延遲。而不是在多個操作之間共享一個ActionListener(使用if條件查看您被調用的操作),請爲每個操作創建一個AbstractAction的子類。

相關問題