Kotlinのthrow文の使い方!例外を発生させる基本と応用を初心者向けに解説
生徒
「Kotlinで自分でエラーを出すような処理ってできますか?例えば、入力が変だったときに止めるとか。」
先生
「できますよ。そのときに使うのがthrowというキーワードです。エラーを自分で投げて、処理を止めたり、別の動きをさせたりできるんです。」
生徒
「自分でエラーを出せるんですね!それってどうやって使うんですか?」
先生
「では、Kotlinのthrow文の使い方を、わかりやすく説明していきますね!」
1. throw文とは?
Kotlinのthrow文は、自分でエラー(例外)を発生させるための書き方です。プログラムを続けると危ないと判断したときや、間違った入力を見つけたときに、「ここで処理を止めて!」と指示できます。
たとえば、年齢の入力にマイナスが来たらそのまま続けるのはおかしいですよね。そんなときにthrowを使うことで、間違いを早い段階で発見でき、原因もはっきりさせられます。
イメージしやすいように、簡単な例を見てみましょう。
fun checkName(name: String) {
if (name.isEmpty()) {
throw Exception("名前が入力されていません")
}
println("入力された名前:$name")
}
この関数は、名前が空だった場合にthrowで強制的に止めています。プログラムが間違ったデータをそのまま処理しないようにできる、という仕組みですね。初心者でも覚えやすい、Kotlinの大事なポイントです。
2. throwの基本的な使い方
throwは、「この条件なら続行できない」と判断した瞬間に例外オブジェクトを投げて処理を中断するためのキーワードです。書き方の基本は、throw 例外クラス("原因がわかる短いメッセージ")という形になります。入力チェックやバリデーションでよく使われ、Kotlinの例外処理の入門ポイントです。
まずは、年齢の入力値を検証するシンプルな例です。ガード節(先に不正を弾く書き方)を使うと読みやすくなります。
fun checkAge(age: Int) {
if (age < 0) {
// 不正な値を見つけたら、理由を添えて直ちに中断
throw IllegalArgumentException("年齢は0以上を指定してください:入力=$age")
}
println("年齢:$age") // ここに来るのは正しい値だけ
}
IllegalArgumentExceptionは「関数に渡された引数が不正」のときに使う代表的な例外です。メッセージには「何がダメで、何を期待するのか」を短く書くと、後で原因を追いやすくなります。
もうひとつ、文字列の入力チェックの例です。空文字やスペースだけの名前は受け付けない、というルールを明確にできます。
fun requireName(name: String) {
if (name.isBlank()) {
throw IllegalArgumentException("名前は空白以外の文字を入力してください")
}
println("入力された名前:$name")
}
ポイントは次の3つです。①早めに判定して早めに失敗する(Fail Fast)。②適切な例外クラスを選ぶ(引数の誤りならIllegalArgumentException)。③短く具体的なメッセージで原因をはっきり伝える。これだけで、初心者でも読みやすく保守しやすいKotlinコードに近づきます。
3. throwを使った関数を呼び出す
実際にこの関数を使ってみましょう。エラーが起きると、処理はそこで止まります。
fun main() {
checkAge(25) // 正常
checkAge(-5) // エラー発生
}
年齢:25
Exception in thread "main" java.lang.IllegalArgumentException: 年齢は0以上を指定してください
このように、throwで発生させたエラーは、メッセージとともに表示されます。
4. throwとtry-catchの組み合わせ
throwで例外を出すとき、それをtry-catchで受け取ることもできます。これでプログラムを止めずに安全に処理できます。
fun main() {
try {
checkAge(-1)
} catch (e: IllegalArgumentException) {
println("エラーが発生しました:${e.message}")
}
}
エラーが発生しました:年齢は0以上を指定してください
throwで投げた例外をcatchで受け取り、e.messageでエラーメッセージを表示できます。
5. throwで使える例外クラス
Kotlinでは、さまざまな種類の例外(エラー)クラスを使ってthrowできます。代表的なものは以下のとおりです:
IllegalArgumentException:引数が不正なときIllegalStateException:現在の状態が正しくないときNumberFormatException:文字列を数値に変換できないときException:一般的な例外(汎用)
例えば、状態がおかしい場合には以下のように書きます。
val isReady = false
if (!isReady) {
throw IllegalStateException("準備ができていません")
}
6. カスタム例外クラスを作ることもできる
少し発展的ですが、自分でオリジナルの例外クラスを作ることもできます。
これは後でエラーの種類を細かく分けたいときに便利です。
class MyCustomException(message: String) : Exception(message)
fun test(value: Int) {
if (value == 0) {
throw MyCustomException("ゼロは使えません")
}
}
このように、自作の例外クラスをthrowすることで、より柔軟なエラー処理ができます。
まとめ
Kotlinのthrow文を使うことで、自分自身でエラー(例外)を発生させて処理の流れをコントロールできるようになります。特に、ユーザーの入力値を検証する場面や、アプリの状態が不正なときに明確に処理を止めたい場合などにとても有効です。IllegalArgumentExceptionやIllegalStateExceptionなど、用途に応じた例外クラスを使い分けることで、エラー内容がより明確になり、後からコードを読むときの理解も深まります。
また、throwとtry-catchを組み合わせることで、プログラム全体の信頼性を高めることができます。予想外の入力や想定外の動きに備えて、安全に処理を続けるための仕組みが作れるのです。これは、アプリケーションの信頼性やユーザー体験に直結する非常に重要な考え方です。
さらに、Kotlinではカスタム例外(自作の例外クラス)も定義できるため、アプリケーションに特化したエラーメッセージや挙動を設計することも可能になります。複雑なシステムになってくると、例外を分類・整理して扱うことが重要になってくるので、今のうちから慣れておくと将来的にとても役立ちます。
以下は、すべてを組み合わせた応用的なサンプルコードです。初心者の方も、自分でthrowとtry-catchを実際に使ってみることで、Kotlinの例外処理に対する理解をより深めることができるでしょう。
class InputTooShortException(message: String) : Exception(message)
fun checkInput(input: String) {
if (input.isBlank()) {
throw IllegalArgumentException("入力が空です")
}
if (input.length < 3) {
throw InputTooShortException("入力は3文字以上にしてください")
}
println("入力された文字列:$input")
}
fun main() {
val userInput = "あ"
try {
checkInput(userInput)
} catch (e: IllegalArgumentException) {
println("入力エラー:${e.message}")
} catch (e: InputTooShortException) {
println("カスタムエラー:${e.message}")
}
}
カスタムエラー:入力は3文字以上にしてください
上記のコードでは、「入力が空かどうか」と「文字数が短すぎないか」をチェックし、それぞれに異なる例外を使って適切にエラーを出しています。これにより、どのような問題が起きたのかをユーザーに具体的に伝えやすくなります。エラー処理は難しく感じられるかもしれませんが、少しずつ慣れていけば、Kotlinの開発において非常に心強いスキルになります。
生徒
「Kotlinで自分でエラーを出すのって、ちょっとこわそうでしたけど、思ったより簡単でした!」
先生
「そうですね。throw文は、正しく使えばプログラムを安全に動かすための大切な道具なんですよ。」
生徒
「しかも、try-catchでちゃんと受け取ってあげれば止まらずに続けられるんですね。入力チェックにすごく使えそうです。」
先生
「その通りです。ユーザーの入力値をきちんと検証して、適切なエラーメッセージを返せば、アプリの信頼性が上がりますよ。」
生徒
「カスタム例外も使えるってことは、アプリに合わせたエラー設計もできるんですね!プロっぽい!」
先生
「その感覚、大切にしてください。Kotlinの例外処理はとても強力なので、今のうちから少しずつ練習していきましょう。」
Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。
基礎からわかるKotlinをAmazonで見る※ Amazon広告リンク
この記事を読んだ人からの質問
プログラミング初心者からのよくある疑問/質問を解決します
Kotlinのthrow文って何のために使うの?初心者でも理解できる使い方が知りたいです。
Kotlinのthrow文は、プログラムの中で意図的にエラー(例外)を発生させたいときに使います。例えば不正な入力があった場合など、「この先は処理を止めたい」と判断したときに使います。
【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分
「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。
本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。
具体的な体験内容と環境
【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。
【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。
この60分で得られる3つの体験
プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。
「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。
Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。
※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。
Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験