从onClickListener内部处理深度异常

时间:2017-08-29 11:20:44

标签: java android exception-handling onclicklistener

我有一种方法可以在某些onClickListener上定义Button, 这种方法会抛出异常。

  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
   }

我想要做的是抓住来自Exception的{​​{1}}并将其从buttonClicked()投出。

所以我应该能够抓住来自foo()的{​​{1}}:

Exception

关于如何操作的任何想法 - 不使用接口。

1 个答案:

答案 0 :(得分: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());
}

因此,如果成功设置了setOnClickListener()中的foo(),但Exceptionfoo()已被foo()捕获,您将收到来自buttonClicked()的消息每次点击后来自console的邮件。