2010-12-16 1 views
2

SOLVED!ありがとう、すべての迅速な回答のために、問題は、私はあなたがまだヘッダーにスロー例外を追加する必要がある例外をキャッチすると思っていた ^ ^かなり私のおかげでダム、もう一度おかげで! ------------------------------------オリジナルのPOST ------- こんにちは、 メソッドload()があり、このメソッドはIOExceptionをスローします。 私はこれをしようとしています:actionPerformedを使用すると、その中のメソッドが例外をスローする可能性があるため、失敗します。

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

問題がある、私は追加する必要はIOExceptionがスローのactionPerformedに、私がしなければそう。 私はエラーが言っ取得:()おそらくgetActionCommand(?)あなたはIOExceptionをスローする必要がある、またはない方法を囲むいずれか

+0

回答が得られたら質問を変更しないでください。答えはもはや意味をなさない。質問を編集する必要がある場合は、EDIT行などの下にその質問を投稿してください。 – Falmarri

+0

@ user545236と@Falmarriあなた自身の質問に答えるために受け入れられる練習は、実際の回答を投稿し、元の質問をまったく編集しないことです。質問の編集は、明確化のために、より多くの情報(サンプルコードなど)を追加する必要があります。 –

答えて

2

loadIOExceptionを投げた場合、あなたは何をしたいのかを理解する必要があります。方法actionPerformedを呼び出す場合、IOExceptionが必要でないため、それを処理できない可能性があります。

あなたはそれを処理できますか?エラーメッセージを表示して、ユーザーに再度試行させることによって、その場合は、try/catchブロックをactionPerformedに置き、そのように処理します。

できない場合、になります。例外をキャッチしてRuntimeExceptionにラップします。これは一般的に例外を扱うかなり厳しい方法ですが、場合によってはそれが最善の方法です。スイングは例外をキャッチしてログに記録しますので、この場合はあまり役立たないかもしれませんが、デフォルトの動作も変更することができます。

+0

Swingでは、キャッチされていない例外ハンドラがあり、RuntimeExceptionがコンソールに記録されてしまいます。 – Anon

+0

@Anon:ありがとう、それを説明するために編集します。 –

0

)「クラスイマイチは抽象宣言や公共のボイドactioPerformedを(オーバーライドしないでtry/catch

+0

OPは彼の質問では、 'load()'がIOExceptionをスローするメソッドであると言います。 – Tim

+0

あなたは正しいです。私はそれを誤って読んだ、答えはまだ適用されます。 – Falmarri

1

は、あなたは、単にtryload()への呼び出しを囲むことができない理由がある - catchブロック例:?

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

これはあなたがた場合に実行することができますいくつかの行動を持っていることを前提としていload()が失敗します。 load()?アプリケーションが読み込めない場合はどうすればよいでしょうか?

+0

私はこれが好きです:) – davs

0

actionPerformed()のコンテキスト内でIOExceptionをどのように処理するか考える必要があります。

1つの方法は、try/catchブロックを使用し、キャッチディスプレイに何か問題が発生したことをユーザーに知らせるダイアログを使用することです。例外を意味のあるものに変換することができれば、そしてユーザーが問題から回復する方法をユーザーに与えることができれば、より効果的です。

ちなみに、長時間実行されているIO操作を実行している場合、イベントディスパッチスレッドでは実行しないでください。これにより、GUIに遅延が発生します。複数のアクション間でActionListenerを共有するのではなく(呼び出されたアクションを確認するためのif条件を使用)、それぞれに対してAbstractActionのサブクラスを作成します。

関連する問題