Kotlinの複数catchの使い方を初心者向けにやさしく解説!例外の種類ごとに分けて処理する方法
生徒
「Kotlinのtry-catchって、エラーが起きたときに使うんですよね?」
先生
「その通りです。ただし、catchは1つだけじゃなくて、エラーの種類ごとに分けて複数使うこともできますよ。」
生徒
「えっ!?エラーの種類ってどういう意味なんですか?」
先生
「わかりやすく説明していくので、一緒に学んでいきましょう!」
1. Kotlinの例外処理とは?エラーを回避する仕組み
Kotlin(コトリン)でアプリやシステムを開発していると、コードの書き方は正しくても、実行中に予期せぬトラブルが発生することがあります。たとえば、ユーザーが「年齢」を入力する欄に、間違えて「あいうえお」という文字を入力してしまったらどうなるでしょうか?
コンピュータは数字として計算しようとしますが、文字なので処理ができず、プログラムが強制終了(クラッシュ)してしまいます。このような実行時に起きる予期せぬエラーを例外(Exception:エクセプション)と呼びます。
なぜ例外処理が必要なの?
例外を放置すると、アプリが突然真っ暗になって閉じたり、保存されていないデータが消えたりしてしまいます。これを防ぎ、エラーが起きても「正しくエラーメッセージを表示して、安全に処理を続ける」ために、Kotlinではtry-catchという仕組みを使います。
まずは、例外が発生してプログラムが止まってしまう簡単な例を見てみましょう。
fun main() {
val text = "こんにちは"
// 文字列を数値に変換しようとすると、ここでエラー(例外)が発生します
val number = text.toInt()
println("この行は実行されません")
}
このコードを実行すると、toInt()の部分で「数字じゃないよ!」というエラー(NumberFormatException)が発生し、その下のprintlnまでたどり着かずにプログラムが終了してしまいます。この「困った状況」をスマートに解決するのが、これから解説するtry-catchの役割です。
2. 例外(Exception)の種類とよくある具体例
JavaやKotlinなどのプログラミングにおいて、エラー(例外)は決して怖いものではありません。「どんなミスが起きたのか」をコンピュータが教えてくれる大切なサインです。代表的な例外の種類を、初心者がつまずきやすい具体例と一緒に見ていきましょう。
- ArithmeticException(算術例外)
数学的に不可能な計算(0での割り算など)をした時に発生します。 - NumberFormatException(形式例外)
「あいうえお」という文字を無理やり数字に変換しようとした時に発生します。 - ArrayIndexOutOfBoundsException
用意したリストの箱の数を超えて、存在しない番号の中身を見ようとした時に発生します。
実際のコードで、わざとエラーを起こしてみるサンプルを確認してみましょう。ここではKotlinを例にします。
fun main() {
val text = "100円" // 数字以外の文字が入っている
try {
// 文字列を数値に変換しようとする
val number = text.toInt()
println("数値は ${number} です")
} catch (e: NumberFormatException) {
// 数字に変換できない文字が含まれていた場合の処理
println("【エラー発生】入力された値が正しい数字ではありません。")
} catch (e: ArithmeticException) {
// 0で割るなどの計算ミスが起きた場合の処理
println("【エラー発生】計算方法に誤りがあります。")
}
}
このように、例外の種類ごとに個別の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で追加できます。
Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。
基礎からわかるKotlinをAmazonで見る※ Amazon広告リンク
8. Kotlinの例外処理をしっかり理解しよう
Kotlinの例外処理は、プログラムが途中で止まらないように守る大切な仕組みです。
とくに複数のcatchを使うと、より細かい制御ができて、ユーザーにも優しいアプリが作れます。
【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分
「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。
本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。
具体的な体験内容と環境
【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。
【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。
この60分で得られる3つの体験
プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。
「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。
Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。
※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。
Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験