2017-08-29 1 views
1

ButtononClickListenerを定義するメソッドがあります。 このメソッドは例外をスローします。深い例外を、onClickListener内部から処理します。

void foo() throws Exception{ 
       button.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         buttonClicked(); 
        } 
       }); 
      } 

また、buttonClicked()も例外をスローします。

void buttonClicked() throws Exception{ 
     //some code that can cause exception 
    } 

私は何をしたいExceptionbuttonClicked()から来たとfoo()からそれを投げるキャッチすることです。インタフェースを使用してなし-

try 
{ 
    foo(); 
} 
catch (Exception e) 
{ 
    // HERE 
} 

これを行う方法上の任意のアイデア:

だから私はExceptionをキャッチすることができるはずがでbuttonClicked()から来ました。

+0

buttonClickedのボイド(){//使用トライキャッチ //例外 を引き起こす可能性がありますいくつかのコード} –

+0

@BapusahebShinde再び質問を再読み込みおよび/または 'throws'が何を意味するか確認してください。 –

+0

buttonClicked()からExceptionをスローしてfoo()やそれからキャッチしたいのですか?なぜあなたはfoo()とbuttonClicked()の両方からスローしようとしますか? – Hetfieldan24

答えて

0

これはあなたが欲しいものです。

void foo() throws Exception 
{ 
    button.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View view) 
     { 
      try 
      { 
       buttonClicked(); 
      } 
      catch (Exception e) 
      { 
       try 
       { 
        throw new Exception("message from buttonClicked(): " + e.getMessage()); 
       } 
       catch (Exception newException) 
       { 
        Log.e("CATCHED", newException.getMessage()); 
       } 
      } 
     } 
    }); 
} 

それではあなたはfoo()を呼び出すとき:

try 
{ 
    foo(); 
} 
catch (Exception e) 
{ 
    Log.e("CATCHED", "message from foo(): " + e.getMessage()); 
} 

foo()setOnClickListener()が正常にsettedたが、その後Exceptionfoo()に巻き込まれたのであれば、あなたから一度、メッセージfoo()からメッセージを受信しますクリックするたびにbuttonClicked()

+0

私はすでにあなたのロジックを試して、それは間違っています!唯一呼び出される行は 'Log.e(" CATCHED "、newException.getMessage());'です。つまり、外部キャッチは決して呼び出されません! –

+0

onClickListener()が正常に設定されていますか?あなたは完全にコードを投稿できますか?どのように両方の例外を引き起こしましたか? – Hetfieldan24

+0

Idkあなたはsettedによって何を意味するのですか!、plzあなたのコードをデモアプリケーションで試してみてください! –

関連する問題