我正在尝试捕获readerAccount所属类所引发的登录异常。在下面的代码中。
while(!readerAccount.isAuthenticated()) {
try {
readerAccount.login();
} catch(AuthenticationException e) {
cmDialog.show();
Toast.makeText(this.mCtx, "login failed", Toast.LENGTH_SHORT).show();
Log.w("Google Reader API","login failed");
continue;
}
}
但是,catch语句的唯一部分是Log.w()函数。我的印象是,在一个catch语句中,你有机会从错误中恢复,但是程序完全黑屏并且没有显示对话框,也没有显示Toast。这是怎么回事?
答案 0 :(得分:0)
.login()调用可能会导致您在catch语句中使用的其他对象发生更改(特别是在出现错误并抛出异常时),或者以某种方式锁定与之相关的资源它们可以解释为什么.show()和.makeTest(...)调用在catch语句中没有按照你期望的方式运行。
您可能希望尝试在try语句之前打印cmDialog对象的属性和信息,并在.show()调用之前在catch语句中打印,以便能够比较并检查是否有任何更改了对象的状态或任何使用过的资源的状态。
我希望有所帮助。
答案 1 :(得分:0)
我得到了答案。对话框交互后应运行的代码应始终放在onClickListener中,以显示特定对话框。所以应该从onClickListener中调用login()函数,如果发生不成功的登录,则应该调用该对话框,直到成功登录为止。
非常感谢大家。