この記事内のKotlinのコードは、kotlin-stdlib-common 1.3.72
で確認しています。
見つけて便利だと思ったので📝です。
Javaでは、Non-nullが想定される値がnullだった際、例外を投げるコードを以下のように書けます。
if (nonNullIsExpceted == null) { throw new IllegalStateException("nonNullIsExpceted should not be null."); }
上記のようなコードをKotlinでは以下のように書くことができます。
パターン1: throwを使う
if (nonNullIsExpceted == null) { throw IllegalStateException("nonNullIsExpceted should not be null.") } val valid = nonNullIsExpected ?: throw IllegalStateException("nonNullIsExpceted should not be null.")
パターン2: error関数を使う
if (nonNullIsExpceted == null) { error("nonNullIsExpceted should not be null.") } val valid = nonNullIsExpected ?: error("nonNullIsExpceted should not be null.")
Kotlinの例は、パターン1も2も同じ意味のコードとなります。 error関数の実装はこのようになっています。 渡したメッセージとともにIllegalStateExceptionを初期化しthrowしているのみです。
/** * Throws an [IllegalStateException] with the given [message]. * * @sample samples.misc.Preconditions.failWithError */ @kotlin.internal.InlineOnly public inline fun error(message: Any): Nothing = throw IllegalStateException(message.toString())
短かく書けて直感的だと思いました。 また、message引数がNon-nullで、必ず何かしらのエラーメッセージを記述するAPI仕様になっているのも良いなと思いました、まる。