【Kotlin】レッスン2-08:エラーメッセージを理解しよう|原因と対処法を身につけよう

一つ前のページでは繰り返しの制御について学習しました。
今回は エラーメッセージ について見ていきましょう。
Lesson1:基礎文法編
Lesson2:制御構造編
・Lesson2-1:比較演算子と論理演算子を理解しよう
・Lesson2-2:if文による分岐処理を理解しよう
・Lesson2-3:when文による分岐処理を理解しよう
・Lesson2-4:スマートキャストを理解しよう
・Lesson2-5:for文による繰り返し処理を理解しよう
・Lesson2-6:while文による繰り返し処理を理解しよう
・Lesson2-7:繰り返しを制御しよう
・Lesson2-8:エラーメッセージを読めるようになろう ◁今回はココ
・Lesson2-9:例外処理を理解しよう
・確認問題2-☆1:ハイアンドローゲームを作ろう
・確認問題2-☆2:数字当てゲームを作ろう
・確認問題2-☆3:簡単なじゃんけんゲームを作ろう
Lesson3:関数編
Lesson4:コレクション編
Lesson5:オブジェクト指向編
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は分かりやすいエラーメッセージを提供し、初心者でも効率的にエラーを特定できます。
今回紹介したエラー例と回避方法を覚えておけば、よりスムーズに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("ゼロで割ることはできません") } }