第10章 オブジェクト指向構文 / 第4回 模擬試験

PHPの独自の例外クラスに関する次の記述のうち、正しいものはどれか。

独自の例外クラスは、`Exception`クラス(またはその子クラス)を継承して定義する。 正解
独自の例外クラスは、`Exception`クラスと無関係に自由に定義してよい。
独自の例外クラスは`throw`することができない。
PHPでは独自の例外クラスを作成することはできない。
解説
独自の例外クラスを作りたい場合は、`class MyException extends Exception { ... }`のように、PHP標準の`Exception`クラス(またはその子孫クラス)を継承して定義します。こうすることで`throw`や`catch`の対象として扱えるようになります。 他の選択肢が誤りである理由は次の通りです。 ・例外として`throw`できるのは`Throwable`インターフェイス(`Exception`または`Error`の系譜)を実装したクラスに限られます。`Exception`と無関係に自由なクラスを定義しても、それを`throw`することはできません。 ・`Exception`を継承したクラスは、通常のクラスと同様に`throw new MyException('メッセージ');`のように`throw`できます。 ・PHPでは独自の例外クラスを自由に作成できます(組み込みの例外クラスを継承して、より具体的な例外を作るのもよく使われる手法です)。 例: ``` class InsufficientBalanceException extends Exception {} function withdraw(float $balance, float $amount): float { if ($amount > $balance) { throw new InsufficientBalanceException('残高が不足しています'); } return $balance - $amount; } ``` (参照: 独習PHP 第4版 第10章 オブジェクト指向構文 10.7.6節 独自の例外クラス p.552〜554)

あわせて読みたい解説記事