Kotlinのカスタム例外クラスの作り方をやさしく解説!初心者でもわかるエラー処理の基本
生徒
「Kotlinでエラーが起きたときに、自分でエラーの種類を作ったりできますか?」
先生
「はい、Kotlinでは『カスタム例外クラス』を作ることで、自分専用のエラー(例外)を定義できますよ。」
生徒
「へぇ、自分専用のエラーって何に使うんですか?」
先生
「たとえば、特定の条件でエラーにしたいときに、その理由を明確にしたり、他の人にもわかりやすく伝えたりするために使うんです。」
生徒
「どうやって作るんですか?難しくないですか?」
先生
「大丈夫!とてもシンプルなので、今から一緒に見ていきましょう!」
1. 例外(エラー)ってそもそも何?
まず「例外(れいがい)」とは、プログラムを実行中に思いがけない問題が発生したときに、処理を止めるしくみのことです。
たとえば、「ゼロで割り算した」「ファイルが見つからなかった」「入力が間違っていた」などのときにエラーになります。
Kotlinでは、こういった問題が起きたときにException(エクセプション)という特別なクラスが使われて、プログラムを中断したり、別の処理に切り替えたりします。
2. カスタム例外クラスって何のために作るの?
「カスタム例外クラス」とは、自分で新しい種類の例外(エラー)を定義することです。
たとえば、「年齢がマイナスのときはエラーにしたい」というように、自分のアプリやゲーム、サービスのルールに合ったエラーを作りたいときに使います。
カスタム例外クラスを使えば、エラーが何を意味するのか明確にできるので、プログラムのミスを見つけやすくなります。
3. Kotlinでカスタム例外クラスを作る方法
カスタム例外クラスは、KotlinのExceptionクラスを継承(けいしょう)して作ります。
継承とは:「あるクラスの特徴や機能を受け継いで、新しいクラスを作ること」です。
では、実際にカスタム例外クラスを作ってみましょう。
class InvalidAgeException(message: String) : Exception(message)
このコードでは、InvalidAgeException(無効な年齢エラー)という例外クラスを定義しています。
このクラスを使うことで、「年齢がマイナスだった」というような特定の問題に対応できます。
Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。
基礎からわかるKotlinをAmazonで見る※ Amazon広告リンク
4. カスタム例外を使ってエラーを出してみよう
次に、実際にこのカスタム例外を使ってみましょう。年齢をチェックして、マイナスならエラーを出すコードを作ってみます。
fun checkAge(age: Int) {
if (age < 0) {
throw InvalidAgeException("年齢はマイナスにできません")
}
println("年齢は $age 歳です")
}
fun main() {
try {
checkAge(-5)
} catch (e: InvalidAgeException) {
println("エラー発生: ${e.message}")
}
}
実行結果:
エラー発生: 年齢はマイナスにできません
このようにthrow(スロー)で例外を発生させ、catch(キャッチ)で受け取って処理します。
5. 使いどころとメリット
カスタム例外クラスを使うと、プログラム内で「何が問題だったのか」をより細かく伝えられるようになります。
- 読みやすくなる:他の人がコードを読んだときに、何のエラーかすぐわかる
- メンテナンスしやすい:エラーの種類ごとに対処できる
- アプリのルールを明確にできる:「こういうときはエラーです」とハッキリ伝えられる
たとえば、ゲームで「体力がゼロ以下になったときはゲームオーバーにしたい」という処理をカスタム例外で表すこともできます。
6. 複数のカスタム例外を使い分けよう
カスタム例外は、1種類だけでなく、いろんなルールに応じて複数作ることができます。
class InvalidAgeException(message: String) : Exception(message)
class EmptyNameException(message: String) : Exception(message)
fun checkUser(name: String, age: Int) {
if (name.isBlank()) throw EmptyNameException("名前が空です")
if (age < 0) throw InvalidAgeException("年齢がマイナスです")
println("名前: $name、年齢: $age")
}
このように、条件ごとにカスタム例外を分けることで、エラーの原因を特定しやすくなります。
7. まずはシンプルなものから
カスタム例外クラスは、最初は難しく感じるかもしれませんが、実はとてもシンプルで実用的な仕組みです。
「この状況は特別なエラーにしたい」と思ったとき、迷わず使ってみましょう。
ゲーム、アプリ、サービスなど、あらゆる場面でエラーを見やすく整えるために使えます。
まとめ
Kotlinのカスタム例外クラスは、アプリケーション内で発生するさまざまな問題をわかりやすく整理し、より明確なエラー処理を実現するためのとても重要な仕組みです。例外という考え方は、プログラムを安全に動かすために欠かせないものであり、その中でも自分で例外クラスを定義できるという柔軟さは、Kotlinの大きな魅力のひとつといえます。実際に、ユーザー入力のチェック、年齢や名前の検証、ゲームの体力やステータス管理、アプリ独自のルール判断など、さまざまな場面で役立ちます。 たとえば、標準のExceptionクラスだけでは状況の違いを明確に伝えられないとき、カスタム例外を使うことで「どんな問題が起こったのか」がよりはっきりと表現されます。これはプログラムの可読性を高めるだけでなく、チーム開発でも原因の特定がしやすくなり、メンテナンス性も向上します。また、例外クラスにメッセージを渡すことで、エラーの理由をたった一行で伝えることができ、処理の流れを追いやすくなるという利点もあります。 さらに、カスタム例外はただエラーを投げるだけではなく、try/catch構文と組み合わせることで、状況に応じた柔軟な処理を書けるようになります。「名前が空の場合」と「年齢がマイナスの場合」など、細かい条件ごとに異なる例外を用意することで、ユーザーへのメッセージをより丁寧に伝えることができ、アプリ全体の品質にも良い影響を与えます。こうした積み重ねがプログラミングの理解を深め、より高い完成度のシステムを作る力につながっていきます。 カスタム例外は、慣れないうちは「本当に必要なの?」と思うかもしれませんが、実際に使い始めるとその便利さが実感できます。特に、複数のチェックが必要な関数や、ユーザー操作に応じて細かいバリデーションを行う場面では、大きな力を発揮します。今回の記事で紹介した基本的な作り方と使いどころを押さえておけば、初心者でも迷わず実践できます。
サンプルプログラムで深く理解しよう
下記のプログラムは、複数のカスタム例外を使い分ける例です。Kotlinなら、継承とクラス宣言だけで簡単に作れるため、初心者でも挑戦しやすい仕組みになっています。
class InvalidAgeException(message: String) : Exception(message)
class EmptyNameException(message: String) : Exception(message)
class InvalidScoreException(message: String) : Exception(message)
fun validateUser(name: String, age: Int, score: Int) {
if (name.isBlank()) throw EmptyNameException("名前が空です")
if (age < 0) throw InvalidAgeException("年齢がマイナスです")
if (score !in 0..100) throw InvalidScoreException("スコアが範囲外です")
println("ユーザー情報: $name / $age 歳 / スコア $score 点")
}
fun main() {
try {
validateUser("", -3, 150)
} catch (e: EmptyNameException) {
println("エラー(名前): ${e.message}")
} catch (e: InvalidAgeException) {
println("エラー(年齢): ${e.message}")
} catch (e: InvalidScoreException) {
println("エラー(スコア): ${e.message}")
}
}
このように、状況ごとに別々の例外を用意することで、エラー処理が非常に明確になります。どの条件が失敗したのかを一目で判断できるため、修正や改善がしやすくなるのが大きなメリットです。また、ユーザーごとのエラー内容を丁寧に表示できるため、アプリケーションの使いやすさにもつながります。
生徒
「カスタム例外って最初は難しそうに聞こえましたけど、実際はとてもシンプルで便利なんですね!」
先生
「そうなんです。Kotlinでは継承を使って簡単に例外クラスを作れるので、試してみると意外とすぐに理解できますよ。」
生徒
「特に、名前や年齢のチェックみたいに、場面ごとにエラーを分けられるのが便利だと思いました!」
先生
「その通りです。それぞれの条件に合った例外を作ることで、エラーの理由をはっきり示せるようになりますし、プログラム全体の品質も上がります。」
生徒
「今回の例を見て、例外ってただのエラーじゃなくて、状況を伝えるための大切なしくみなんだと理解できました!」
先生
「そうですね。これからアプリを作るときは、ぜひ自分でルールに合った例外クラスを作ってみてください。きっとプログラムの整理が上手になりますよ。」