Výpis chyby při použítí vykřičníků v Kotlinu

Kotlin kompilátor kontroluje, zda hodnota výrazu může být null a pokud tomu tak je, kód nezkompiluje dokud se v daném místě neprovede kontrola na not null. Programátor si může vynutit, že chce danou hodnotu použít i bez této kontroly pokud si je jist, že hodnota není null pomocí dvou vykřičníků. Pokud hodnota je null, dojde k vyhození kotlin.KotlinNullPointerException.

Nedoporučuje se používat více !! (one celkově se !! mají používat pouze vyjímečně ve zdůvodněných případech) na jednom řádku, protože výpis v logu vám neřekne, která hodnota byla null.

Příklad

class Aa (var b: Bb?)

class Bb (var text: String?)

Výsledky volání

println(a!!.b!!.text!!.toUpperCase())

Exception in thread "main" kotlin.KotlinNullPointerException
	at cz.vitfo.NullKt.main(Null.kt:8)
	at cz.vitfo.NullKt.main(Null.kt)
println(aWithB!!.b!!.text!!.toUpperCase())

Exception in thread "main" kotlin.KotlinNullPointerException
	at cz.vitfo.NullKt.main(Null.kt:8)
	at cz.vitfo.NullKt.main(Null.kt)

Je vidět, že v logu je pouze řádek, kde došlo k vyhození výjimky, nikoliv přesně která část výrazu.

Napsat komentář