Kotlinの例外クラスの基本!ExceptionとRuntimeExceptionの違い
生徒
「KotlinでExceptionとかRuntimeExceptionって見かけるんですけど、どう違うんですか?」
先生
「それは例外処理のクラスの種類ですね。エラーの性質や発生タイミングによって使い分けられます。」
生徒
「具体的にどんな場面で違いが出るんですか?」
先生
「では、KotlinにおけるExceptionとRuntimeExceptionの基本を例付きで解説していきましょう。」
1. Kotlinにおける例外クラスとは?エラー処理の全体像
プログラミングをしていると、入力ミスやネットワークの切断など、予期せぬトラブル(エラー)がどうしても発生します。Kotlinでは、これらの問題を「例外(Exception)」という仕組みを使って管理します。
Kotlinのすべての例外は、Throwableという大元のクラスを継承しています。この下には、主に2つの重要なクラスがあります。
- Error(エラー): メモリ不足など、プログラム側ではどうしようもない致命的な問題。
- Exception(例外): プログラムの書き方や処理の工夫で、適切に対処・回復ができる問題。
今回詳しく学ぶのは、後者の「Exception」です。まずは、最もシンプルな例外が発生するイメージを、プログラミングが初めての方でも分かりやすいコードで見てみましょう。
fun main() {
// 例えば、数字ではない文字を無理やり数字に変換しようとすると...
val text = "こんにちは"
// ここで「そんなの無理だよ!」という例外が発生します
val number = text.toInt()
println("この行は実行されません: $number")
}
このコードを実行すると、プログラムは途中で止まり「NumberFormatException」という例外が表示されます。このように、例外クラスは「何が原因で処理が止まったのか」を名前で教えてくれる役割を持っています。
その中でも、開発者が特によく扱うのが、基本的なExceptionクラスと、その一種であるRuntimeExceptionです。これらがどのように使い分けられるのか、次の章から詳しく解説していきます。
2. Exceptionクラスとは?
Exceptionクラスは、チェック例外(checked exception)と呼ばれることがあります。Kotlin自体にはJavaのような強制チェックはありませんが、意図的に例外を扱う必要がある場合に使います。
fun readFile(fileName: String) {
if (fileName.isEmpty()) {
throw Exception("ファイル名が空です")
}
println("ファイルを読み込みます: $fileName")
}
fun main() {
try {
readFile("")
} catch (e: Exception) {
println("エラー: ${e.message}")
}
}
エラー: ファイル名が空です
このようにExceptionは「事前に予測できるエラー」を表すことが多いです。
3. RuntimeExceptionクラスとは?
RuntimeExceptionは実行時例外(unchecked exception)を表します。これはプログラム実行中に予期せず発生するエラーで、事前に防ぎにくいことが多いです。
fun divide(a: Int, b: Int): Int {
if (b == 0) {
throw RuntimeException("0で割ることはできません")
}
return a / b
}
fun main() {
val result = try {
divide(10, 0)
} catch (e: RuntimeException) {
println("実行時エラー: ${e.message}")
-1
}
println("計算結果: $result")
}
実行時エラー: 0で割ることはできません
計算結果: -1
4. ExceptionとRuntimeExceptionの使い分け
- Exception:事前に想定できるエラー(入力チェック、ファイル存在確認など)
- RuntimeException:実行中に発生する予期しないエラー(計算ミス、nullアクセスなど)
KotlinではJavaのように「必ずcatchしなければならない」制約はありませんが、エラーの性質に応じて使い分けることが重要です。
5. 独自の例外クラスを作る
Kotlinでは独自の例外クラスを作成することもできます。用途に応じた名前を付けることで、エラー原因の特定がしやすくなります。
class InvalidUserInputException(message: String) : Exception(message)
fun main() {
try {
throw InvalidUserInputException("入力が不正です")
} catch (e: InvalidUserInputException) {
println("カスタムエラー: ${e.message}")
}
}
カスタムエラー: 入力が不正です
Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。
基礎からわかるKotlinをAmazonで見る※ Amazon広告リンク
6. 初心者が覚えておきたいポイント
- すべての例外は
Throwableを継承している Exceptionは予測できるエラー、RuntimeExceptionは予測しにくいエラー- Kotlinではcatchは必須ではないが、適切に処理を書くことで安全性が向上
- カスタム例外を作ると可読性と保守性が向上
【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分
「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。
本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。
具体的な体験内容と環境
【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。
【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。
この60分で得られる3つの体験
プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。
「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。
Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。
※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。
Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験