Android Binding& MVVM:未报告的异常;必须抓住

时间:2015-10-31 22:00:44

标签: java android exception binding

我正在尝试学习数据绑定和MVVM模式,但我遇到了Exceptions的问题。

我的viewmodel有一个例外:

    public void play(String move) throws Exception, ChessMoveException{
    String[] positions = move.split("\\s+");
    try {
        Position position1 = new Position(positions[0]);
        Position position2 = new Position(positions[1]);
        this.model.turn(position1, position2);
        if(this.model.getCurrentColor().equals(Color.WHITE)) {
            this.model.setCurrentColor(Color.BLACK);
            messageTurn.set(R.string.blackTurn);
        } else {
            this.model.setCurrentColor(Color.WHITE);
            messageTurn.set(R.string.whiteTurn);
        }
    } catch (Exception ex) {
        //TODO : Toast Exception
    }
}

我在MainActivityEventHandlers中使用此方法:

public void onButtonPlayClicked(View v) throws Exception {
    Log.i("MESSAGE", "Play");
    try {  
        this.activity.binding.getViewModel().play(this.activity.binding.editTurn.getText().toString());
    } catch (Exception ex) {
        Log.i("EXCEPTION", "");
    }
}

在我的activity_main.xml中,我使用了onClick适当性:android:onClick="@{eventHandlers.onButtonPlayClicked}"

但是当我尝试启动我的代码时,这是错误: Error:(374, 43) error: unreported exception Exception; must be caught or declared to be thrown

当我点击它时,它会重定向我生成的ActivityMainBinding.java类,因此我无法编辑它以在onClick方法上添加我的异常:

public void onClick(android.view.View arg0) {
     this.value.onButtonPlayClicked(arg0);
}

有什么办法可以解决此错误吗? 感谢

1 个答案:

答案 0 :(得分:2)

你的方法

public void onButtonPlayClicked(View v) throws Exception {
    Log.i("MESSAGE", "Play");
    try {  
        this.activity.binding.getViewModel().play(this.activity.binding.editTurn.getText().toString());
    } catch (Exception ex) {
        Log.i("EXCEPTION", "");
    }
}

声明它可能会抛出异常,但也会捕获所有异常。我想这在数据绑定插件生成绑定类时会以某种方式混淆。