我正在使用Google登录名,但出现异常。但是,看来我无法抓住它。
我有以下代码:
override fun onactivityResult(requestCode: Int,resultCode: Int,data: Intent?) {
super.onactivityResult(requestCode,resultCode,data)
when (requestCode) {
RC_SIGN_IN -> {
val task = try{
GoogleSignIn.getSignedInaccountFromIntent(data)
} catch (e: ApiException) {
Log.d("EXCEPTION",e.message)
when(e.statusCode) {
12501 -> return
else -> {
e.printStackTrace()
return
}
}
}
...
从Logcat中我可以看到ApiException
是捕获的正确异常:
它绝对是我正在捕捉的那个:
起初,我认为出于某种原因,可能直接与val task = try...
进行分配,因此我相应地更改了代码并尝试了以下方法:
var task: Task<GoogleSignInaccount>?
try{
task = GoogleSignIn.getSignedInaccountFromIntent(data)
} catch (e: ApiException) {
Log.d("EXCEPTION",e.message)
when(e.statusCode) {
12501 -> task = null
else -> {
e.printStackTrace()
task = null
}
}
}
仍然,相同的行为。所以我想也许还有 引发了另一个异常,所以我添加了另一个catch块:
var task: Task<GoogleSignInaccount>?
try{
task = GoogleSignIn.getSignedInaccountFromIntent(data)
} catch (e: ApiException) {
Log.d("EXCEPTION",e.message)
when(e.statusCode) {
12501 -> task = null
else -> {
e.printStackTrace()
task = null
}
}
} catch (e: Exception) {
Log.d("EXCEPTION",e.message)
task = null
}
仍然是相同的行为。我已经在每个步骤上发现了带有断点的代码,但是它完全忽略了catch块。我停在try块:
但是,如果我继续,下一步就是在try-catch块之外。
有人可以解释这种行为吗?