try { // ob_startなどは、file_get_contentsだけで処理を完結させるために使用。 ob_start(); $image = file_get_contents($path); $warning = ob_get_contents(); ob_end_clean(); if (strlen($warning) > 0) { throw new \Exception($waring); } } catch (\Exception $e) { // エラー処理 }
コメントが何を伝えようとしているのか不明だったため、調べてみました。
PHPではエラーが発生すると、メッセージが画面に表示されます。
ob_start関数は出力のバッファリングを開始する関数で、エラーメッセージもバッファリングされます。
上のプログラムではfile_get_contents関数で発生したエラーのメッセージを一旦バッファリングしたあとで、例外としてthrowしたいようです。
しかし、弊社のシステムではフレームワークとしてLaravelを採用しており、エラーはErrorExceptionとしてthrowされるようになっています。
file_get_contentsでエラーが発生すると、ob_end_cleanが実行されないままcatchブロックが実行されてしまいます。
過去のPHPではある程度有効なパターンだったのかもしれませんが、Laravelには合わないので改修しなければなりません。
0 件のコメント:
コメントを投稿