#11 Kotlinで学ぶエラーハンドリングの基本
Kotlinのエラーハンドリングは、Javaの仕組みを引き継ぎつつ、より簡潔に書ける工夫がされています。この記事では、Kotlinにおけるエラーハンドリングの基本を解説します。
try・catchの基本
try {
val result = 10 / 0
} catch (e: ArithmeticException) {
println("0では割れません")
}
Javaと同じく、`try`ブロックの中で例外が発生すると、対応する`catch`ブロックに処理が移ります。複数の`catch`を並べて、例外の種類ごとに異なる処理を書くこともできます。
tryが値を返せるという特徴
以前の記事で触れた「値を返すif」と同じように、Kotlinの`try`も式として値を返せます。
val result = try {
text.toInt()
} catch (e: NumberFormatException) {
0
}
「変換できればその値、できなければ0」という処理を簡潔に書けます。Javaであれば、変数を`try`の外で宣言しておき、`catch`の中で代入する、といった回りくどい書き方が必要になる場面です。
finallyという必ず実行される部分
try {
// 何らかの処理
} finally {
println("処理が終わりました")
}
`finally`ブロックは、例外が発生してもしなくても必ず実行されます。ファイルを閉じる、接続を切断するといった後片付け処理を書くのに適しています。
独自の例外クラスを作る
アプリケーション固有のエラーを表現したい場合は、`Exception`を継承した独自クラスを作ることもできます。
class InsufficientBalanceException(message: String) : Exception(message)
throw InsufficientBalanceException("残高が不足しています")
Kotlinならではの注意点
Kotlinには、Javaの「チェック例外」のような、あらかじめ宣言が必要な仕組みがありません。どんな例外でも自由に`try`・`catch`で扱えますが、その分、対処すべきエラーを見落とさないよう、自分で意識しておく必要があります。またKotlinでは、値が存在しないかもしれない状態を`null`許容型で表現できるため、例外を投げる代わりに`null`を返すという設計もよく使われます。「異常事態は例外で表す」のか「起こりうる結果としてnullで表す」のか、状況に応じて使い分けると、より読みやすいコードになります。
まとめ
Kotlinのエラーハンドリングは`try`・`catch`が基本で、`try`を式として使える簡潔さが特徴です。チェック例外がない分、見落としに注意しつつ、null許容型との使い分けも意識しましょう。
本ページはプロモーションを含みます。
参考書籍(PR)
Kotlinをもっと学びたい方には「やさしいKotlin入門」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿