PHPで例外をいじっています。たとえば、$_GET 要求を読み取り、ファイルをロードするスクリプトがあります。ファイルが存在しない場合は、新しい例外がスローされます。
if ( file_exists( $_SERVER['DOCUMENT_ROOT'] .'/'.$_GET['image'] ) ) {
// Something real amazing happens here.
}
else {
throw new Exception("The requested file does not exists.");
}
問題は、テスト用に存在しないファイルを提供しようとすると、例外メッセージではなく 500 エラーが発生することです。サーバーログは次のとおりです。
[09-Jul-2013 18:26:16 UTC] PHP Fatal error: Uncaught exception 'Exception' with message 'The requested file does not exists.' in C:\sites\wonderfulproject\script.php:40
Stack trace:
#0 {main}
thrown in C:\sites\wonderfulproject\script.php on line 40
ここで本当に明らかな何かが欠けているのではないかと思います。
私はこの質問を確認しましたPHP 致命的なエラー: キャッチされていない例外 'Exception' with message ですが、それは私の問題とはまったく異なり、簡潔な答えがありません。
助けてください?
* 編集 *
これはthrow
キーワードに関連するもののようです。たとえばecho
、次のようにメッセージを画面に出力しました。
「ファイルが存在しません」というメッセージの例外「例外」。C:\sites\wonderfulproject\script.php:183 スタック トレース: #0 {main}
何故ですか?
** 編集 2 **
@Orangepill のおかげで、例外の処理方法について理解が深まりました。そして、私は nettuts から素晴らしい tut を見つけました。リンク: http://net.tutsplus.com/tutorials/php/the-ins-and-outs-of-php-exceptions/