laravelにて独自例外処理の方法をご教授いただけますでしょうか。
仕様
- dropzoneにてCSVアップロード
- Controllerのメソッドにて受け取る
- CSVのvalidation checkを経てDBへ登録
- 登録後、に登録されたデータをjsonでresponse
- dropzonejsのsuccessにてjqueryで、htmlタグを作成して展開
困っていること
仕様の3にて、validationに失敗したレコードを全て、画面に返却しようと考えており、
独自のExceptionを追加したいのですが、どのように組めば良いかアドバイスいただけますでしょうか。
CsvUpLoadController.php
public function CsvUpload(Request $request) { try { $validator = Validator::make($request_file->all(),[ 'csv_file' => 'required|file|mimes:csv,txt' ]); // CSVファイルでなければエラー if ($validator->fails()) { throw new FileUtilsException(array('ファイルのアップロードに失敗しました。再度正いフォーマットでアップロードしてください')); } } catch FileUtilsException $e) { $response['status'] = 'fail'; $response['message_title'] = 'アップロードに失敗しました'); $response['message'] = $e->getArrayMessage(); $response['error_data'] = $none_update; // javascriptへ返却 return $response()->json($response); } catch Exception $e) { $response['status'] = 'fail'; $response['message'] = '登録に失敗しました'; // javascriptへ返却 return $response()->json($response); } }
App/Exceptions/FileUtilsException
class FileUtilsException extends Exception { public function __construct($message = null, $code = 0, Exception $previous = null) { // parent::__construct(json_encode($message), $code, $previous); parent::__construct('error' ,800); } public function getArrayMessage($assoc = false) { return json_decode($this->getMessage(), $assoc); } }
上記で作った場合、Exceptionの方が有効なり、独自で作成したExceptionが使用されません。
handler.phpは、ユーザー画面に返却する仕様なので、他の方法があれば教えていただけると助かります。
hadler.phpに設定した時は、画面にアラートボックスが表示されました。
controllerにて、trycatchでエラーハンドリングを実施したいと思っています。
尚、下記実装したところ正常にクラスは読み込めているようです。
catch (Exception | FileUtilsExecption $e) {
get_class($e)
$response['message'] = get_class($e); // FileUtilsExecptionが取得される
// javascriptへ返却
return $response()->json($response);
}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。