カスタム例外の作成

Kotlinにおける「カスタム例外の作成」とは、標準で用意されている例外クラス(例:IllegalArgumentExceptionIOExceptionなど)では対応しきれない、アプリケーション固有のエラー状況を表現するために、自分自身で例外クラスを定義することを意味します。これにより、エラーの種類をより明確に区別し、適切な例外処理を行うことが可能になります。


カスタム例外を作成する基本構文

Kotlinでは、すべての例外クラスはThrowableクラスを継承しており、通常はExceptionを継承してカスタム例外を定義します。

kotlin
// カスタム例外クラスの定義 class MyCustomException(message: String) : Exception(message)

この例では、MyCustomExceptionという名前のカスタム例外クラスを定義しています。コンストラクタでエラーメッセージを受け取り、スーパークラスのExceptionにそのメッセージを渡しています。


使用例(例外のスローとキャッチ)

カスタム例外は、通常のthrow文を使ってスローし、try-catchブロックで捕捉します。

kotlin
fun validateAge(age: Int) { if (age < 0) { throw MyCustomException("年齢は0以上でなければなりません。") } } fun main() { try { validateAge(-5) } catch (e: MyCustomException) { println("カスタム例外を捕捉しました: ${e.message}") } }

このコードでは、validateAge関数内で条件を満たさない場合にカスタム例外をスローし、main関数でその例外をキャッチしています。


カスタム例外に追加情報を持たせる

必要に応じて、追加のプロパティやロジックを持たせることもできます。

kotlin
class InvalidUserInputException( val errorCode: Int, message: String ) : Exception(message)

呼び出し側ではこのerrorCodeプロパティを用いて、より詳細なエラー処理を行うことができます。


カスタム例外のメリット

  1. 例外の意味が明確になる
    「何が問題なのか」がクラス名から直感的に理解できるようになります。

  2. catchブロックで細かく処理を分けられる
    異なる種類のエラーに対して、異なる処理を実行することができます。

  3. 保守性の向上
    アプリケーションの拡張やデバッグが容易になります。


補足:Kotlinでは「検査例外(checked exceptions)」は存在しません

Javaとは異なり、Kotlinはすべての例外を**非検査例外(unchecked exceptions)**として扱います。したがって、関数にthrowsキーワードを書く必要はなく、呼び出し側もtry-catchで必ず捕捉する義務はありません。

生成日:2025/05/04