简体   繁体   中英

Why is my null check unreachable?

In the following example i have an nullable property userId. I would like throw an Exception if it null. Android studio is telling me the code block inside if(userId == null) is unreachable. Can anyone explain why this is unreachable?

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
        }

    }

Ok... I see... in fact it is the following line that contains the unreachable code:

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

The reason: you throw your exception immediately and not when there occurs an error in processing. In fact the onError itself becomes unreachable.

onError however, needs the exception to throw as passed argument, so what you rather want is something like:

it.onError(RuntimException("Unauthorised"))

ie omit the throw .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM