heihei blog

Blog icon by Unsplash https://unsplash.com/@virussinside

Kotlin error関数

この記事内の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仕様になっているのも良いなと思いました、まる。

kotlinlang.org