【Kotlin】レッスン2-08:エラーメッセージを読めるようになろう

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:エラーメッセージ

この記事の練習問題を解くために必要な知識:
基礎文法(レッスン1)比較演算子と論理演算子if文による分岐処理when文による分岐処理スマートキャストfor文による繰り返し処理while文による繰り返し処理繰り返しの制御エラーメッセージ例外処理

<<前のページ Kotlin記事一覧 次のページ>>

Kotlinの「エラーメッセージ」とは

この章ではKotlinにおける「エラーメッセージ」の読み方を学習します。




プログラムを書くとき、エラーメッセージは初心者にとっても経験者にとっても重要な手がかりです。

Kotlinではエラーメッセージが非常に分かりやすく設計されており、問題の特定と解決が簡単になる工夫がされています。

この記事ではエラーメッセージとは何か、よくあるエラーの例、そしてそれらを回避する方法について学びます。

エラーメッセージとは?

エラーメッセージとはプログラムが正しく動作しない場合に表示される警告やエラー情報です。

エラーの種類や発生した箇所を知らせる役割があり、プログラムを修正する際のヒントになります。

Kotlinではエラーメッセージが具体的で簡潔なため、エラーを追跡しやすい特徴があります。

よくあるエラーメッセージとその回避方法

初心者がよく遭遇しやすいエラーメッセージをいくつか紹介します。

是非このページをブックマークし、辞書のように活用してください。

NullPointerException

発生状況:Null安全性が確保されていない場合に発生します。Nullable型の変数を直接操作しようとするとエラーになります。

val message: String? = null
println(message.length) // NullPointerException

回避方法:KotlinのNull安全性を活用することで防止できます。セーフコール演算子?.やエルビス演算子?:を利用しましょう。

val message: String? = null
println(message?.length ?: "値がありません")

Type Mismatch Error

発生状況:型が期待されたものと異なる場合に発生します。Kotlinでは型推論が役立つものの、明示的な型指定が必要な場合があります。

val number: Int = "123" // コンパイルエラー

回避方法:変数の型を正確に指定するか、型推論を正しく活用します。

val number: Int = 123 // 型を正確に合わせる

Unresolved Reference

発生状況:宣言されていない変数やインポートされていないライブラリを参照した場合に発生します。

println(undeclaredVariable) // コンパイルエラー

回避方法:変数や関数を正しく宣言し、必要なライブラリをインポートします。

val declaredVariable = "Hello"
println(declaredVariable)

Division by Zero Exception

発生状況:数値をゼロで割るとランタイムエラーが発生します。

val result = 10 / 0 // ArithmeticException

回避方法:割り算を行う前に分母がゼロでないことを確認しましょう。

val divisor = 0
if (divisor != 0) {
    val result = 10 / divisor
} else {
    println("ゼロで割ることはできません")
}

IndexOutOfBoundsException

発生状況:存在しないインデックスにアクセスしようとした場合に発生します。

val list = listOf(1, 2, 3)
println(list[5]) // IndexOutOfBoundsException

回避方法:リストや配列にアクセスする前に、サイズを確認する条件を追加しましょう。

val list = listOf(1, 2, 3)
if (list.size > 5) {
    println(list[5])
} else {
    println("指定されたインデックスは存在しません")
}

NumberFormatException

発生状況:文字列を数値に変換しようとした際、不正なフォーマットが原因で発生します。

val number = "abc".toInt() // NumberFormatException

回避方法:toIntOrNullを使用して、変換できない場合の処理を追加しましょう。

val input = "abc"
val number = input.toIntOrNull() ?: 0
println(number)

まとめ

エラーメッセージはプログラムのデバッグや改善のために欠かせない重要なツールです。

Kotlinは分かりやすいエラーメッセージを提供し、初心者でも効率的にエラーを特定できます。

今回紹介したエラー例と回避方法を覚えておけば、よりスムーズにKotlinを学習・活用できるでしょう。

エラーメッセージの練習問題

以下のコードをコピーして実行してください。そうすると複数のエラーが発生するので、表示されるメッセージを参考にエラーを修正してください。

fun main() {
    val message: String? = null
    println("Message length is: ${message.length}")

    val number: Int = "123"
    println("Number is: $number")

    println(undeclaredVariable)

    val divisor = 0
    val result = 10 / divisor
    println("Result is: $result")
}

練習問題の解答

例えば以下のようなプログラムが考えられます。

fun main() {
    // NullPointerExceptionを防ぐ
    val message: String? = null
    // セーフコール演算子を使用
    println("Message length is: ${message?.length ?: "値がnullです"}")

    // Type Mismatch Errorを防ぐ
    // 正しい型を使用する
    val number: Int = 123
    println("Number is: $number")

    // Unresolved Referenceを防ぐ
    // 変数を事前に宣言する
    val declaredVariable = "This is a declared variable"
    println(declaredVariable)

    // Division by Zero Exceptionを防ぐ
    val divisor = 0
    if (divisor != 0) {
        val result = 10 / divisor
        println("Result is: $result")
    } else {
        println("ゼロで割ることはできません")
    }
}
<<前のページ Kotlin記事一覧 次のページ>>

この記事への質問・コメント

この記事を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    Kotlinのテキスト&問題集トップへ戻る
    トップページへ戻る