Kotlinの複数catchの使い方を初心者向けにやさしく解説!例外の種類ごとに分けて処理する方法
生徒
「Kotlinのtry-catchって、エラーが起きたときに使うんですよね?」
先生
「その通りです。ただし、catchは1つだけじゃなくて、エラーの種類ごとに分けて複数使うこともできますよ。」
生徒
「えっ!?エラーの種類ってどういう意味なんですか?」
先生
「わかりやすく説明していくので、一緒に学んでいきましょう!」
1. Kotlinの例外処理とは?
Kotlin(コトリン)でプログラムを書いていると、思わぬエラーが起こることがあります。たとえば、「数字じゃない文字」を数値に変換しようとするとエラーになります。
このようなエラー(例外:Exception(エクセプション))を処理するために、Kotlinではtry-catchという仕組みがあります。
2. 例外(Exception)の種類って?
エラーには種類があります。たとえば:
- NumberFormatException:数字に変換できないとき
- ArithmeticException:割り算で0を使ったとき
それぞれに違うcatchを書いておくと、適切な対処ができるようになります。
3. Kotlinで複数のcatchを使う基本構文
それでは、Kotlinでtry-catchを複数使う基本的な例を見てみましょう。
fun main() {
val input = "abc"
val result = try {
val number = input.toInt()
val calc = 10 / number
calc
} catch (e: NumberFormatException) {
println("数字に変換できませんでした")
-1
} catch (e: ArithmeticException) {
println("0で割ることはできません")
-2
} catch (e: Exception) {
println("その他のエラーが発生しました")
-999
}
println("結果は $result")
}
このコードでは、tryの中で2つの処理を行っています。
- 文字列を整数に変換:
toInt() - 10をその数で割る:
10 / number
入力が「abc」のように数字でないと、最初のcatch(NumberFormatException)が動作します。
数字に変換できませんでした
結果は -1
4. catchは上から順番にチェックされる
Kotlinでは、エラーが発生したときにcatchブロックを上から順番に確認していきます。
そのため、特定のエラーを先に書くようにしましょう。もしExceptionを最初に書くと、それが全てを受け取ってしまい、他のcatchは無視されます。
5. 実際に複数のエラーを試してみよう
次は、「0」を入力したときの動作を試してみましょう。
fun main() {
val input = "0"
val result = try {
val number = input.toInt()
val calc = 10 / number
calc
} catch (e: NumberFormatException) {
println("数字に変換できませんでした")
-1
} catch (e: ArithmeticException) {
println("0で割ることはできません")
-2
} catch (e: Exception) {
println("その他のエラーが発生しました")
-999
}
println("結果は $result")
}
0で割ることはできません
結果は -2
このように、状況によって適切なcatchが動作するのがわかります。
6. 複数catchを使うメリットとは?
複数のcatchを使うことで、エラーの内容に応じて別々の対応ができるようになります。
たとえば、ユーザーに表示するメッセージをわかりやすくしたり、ログに記録する内容を変えたりできます。
7. catchの種類は公式リファレンスで確認できる
使える例外の種類はたくさんありますが、よく使うのは以下のようなものです:
NullPointerException:null(ヌル)値を操作したときIllegalArgumentException:無効な引数を渡したときIOException:ファイル読み書きでエラーが起きたとき
これらは必要に応じてcatchで追加できます。
8. Kotlinの例外処理をしっかり理解しよう
Kotlinの例外処理は、プログラムが途中で止まらないように守る大切な仕組みです。
とくに複数のcatchを使うと、より細かい制御ができて、ユーザーにも優しいアプリが作れます。