为什么我的空检查无法访问?

Why is my null check unreachable?

在下面的示例中,我有一个可为空的 属性 用户 ID。如果它为空,我想抛出一个异常。 Android studio 告诉我 if(userId == null) 中的代码块无法访问。谁能解释为什么这是无法访问的?

return Observable.create<Optional<UserEntity>> { it ->

        val userId: String? = firebaseAuth.currentUser?.uid

        if(userId == null){
            it.onError(throw RuntimeException("Unauthorised"))
            it.onComplete()
        }else{
            //Do something
        }

    }

好的...我明白了...实际上是以下包含无法访问的代码的行:

it.onError(throw RuntimeException("Unauthorised"))

原因:你是立即抛出你的异常,而不是在处理过程中出现错误时抛出。事实上 onError 本身变得不可访问。

onError 然而,需要异常作为传递的参数抛出,所以你更想要的是:

it.onError(RuntimException("Unauthorised"))

即省略 throw.