複数の Exception を処理するにはどうしたらいいですか?という質問について詳しく教えてください

順を追って説明していきます。
2023年8月16日
ユーザー

「複数の Exception を処理するにはどうしたらいいですか?」という質問を拝見させてもらったのですが以下のコードがあまり理解できなく、質問させてもらいました。

<?php

class MyException extends Exception { }

class MyOtherException extends Exception { }

try {
  throw new MyException();
} catch (MyOtherException $e) {
  echo "MyOtherException" . PHP_EOL;
} catch (MyException $e) {
  echo "MyException" . PHP_EOL;
}

try {
  throw new MyOtherException();
} catch (MyException $e) {
  echo "MyException" . PHP_EOL;
} catch (MyOtherException $e) {
  echo "MyOtherException" . PHP_EOL;
}

今考えていることと、わからないことを伝えていきたいと思います。

【考えていること】

実行されると try {throw new MyException();} によってまずは MyException のインスタンスができる。

それを

 catch (MyOtherException $e) {
  echo "MyOtherException" . PHP_EOL;
} catch (MyException $e) {
  echo "MyException" . PHP_EOL;
}

catch して、今回は MyException のインスタンスなので

catch (MyException $e) {
  echo "MyException" . PHP_EOL;
}

の処理がされる。

同様に try {throw new MyOtherException();} も処理される。
こんな感じで自分は考えています。

【わからないこと】

ドットインストールさんの質問に対する回答に

複数の Exception を別の方法で処理したいときは、 catch を複数回書くことができます。例えば、このようなコードになりますね。

とありましたが、仮に 2 つの Exception があったとしたら、class MyException extends Exception { }class MyOtherException extends Exception { }{} 内にそれぞれの Exception についてのコードを書くみたいな感じになるのですか?

また、どのようなコードを書くのでしょう?

長文になってしまい申し訳ないです。

この回答を見るにはプレミアムプランへの登録が必要です

プレミアムプランとは?

このレッスンの質問と回答(6)