例外の作成にめんどくさい手続きが必要なとき。例えば、HTTP のレスポンスオブジェクトを元に例外を作成するときとか。 <?php $message = sprintf( "HTTP/%s %s %s", $response->getVersion(), $response->getCode(), $response->getMessage() ); throw new HttpException($message, $response->getCode()); そういうときはそれようのメソッドを作ると便利です。 このとき、例外を作成して投げるメソッド と 例外を作成して返すメソッド の2通りの実装方法が考えられます。例えば下記の raise と create です。 <?php class HttpException extends \Exception { /** * 例外を作成して投げ
![PHP で例外を投げるメソッドじゃなく例外を作るメソッドにするただひとつの理由 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/8916071a850646ad426973a80394b483cb295c68/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9UEhQJTIwJUUzJTgxJUE3JUU0JUJFJThCJUU1JUE0JTk2JUUzJTgyJTkyJUU2JThBJTk1JUUzJTgxJTkyJUUzJTgyJThCJUUzJTgzJUExJUUzJTgyJUJEJUUzJTgzJTgzJUUzJTgzJTg5JUUzJTgxJTk4JUUzJTgyJTgzJUUzJTgxJUFBJUUzJTgxJThGJUU0JUJFJThCJUU1JUE0JTk2JUUzJTgyJTkyJUU0JUJEJTlDJUUzJTgyJThCJUUzJTgzJUExJUUzJTgyJUJEJUUzJTgzJTgzJUUzJTgzJTg5JUUzJTgxJUFCJUUzJTgxJTk5JUUzJTgyJThCJUUzJTgxJTlGJUUzJTgxJUEwJUUzJTgxJUIyJUUzJTgxJUE4JUUzJTgxJUE0JUUzJTgxJUFFJUU3JTkwJTg2JUU3JTk0JUIxJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz05ODhhZmFlNDNiNjhmNmU4MDhiOWMzZjU0MmZkZTU5Nw%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwbmd5dWtpJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0xOTMwNGE1MjBlNDIwODY3NTBiOWVjZmQ1NDIzOTg5Yg%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3Dafa3b9562954a54d3a0a24768bfc10e8)