Understanding Laravel Rescue Function

Nay tìm hiểu về Rescue() trong Laravel, thông thường ta hay sử dụng Try/Catch xử lý các ngoại lệ khi có lỗi trong câu lệnh. Nay chia sẻ với mọi người các dùng của Rescue() nó rất hay

rescue(callable $callback, $rescue = null, $report = true)

rescue : được thiết kế để thực thi một đoạn code và "cứu" nó khỏi việc ném ra ngoại lệ.ư

$callback: Hàm chứa code có thể gây ra ngoại lệ.
$rescue: Giá trị hoặc hàm callback sẽ được trả về nếu có ngoại lệ xảy ra.
$report: Nếu true, ngoại lệ sẽ được báo cáo (log). Nếu false, ngoại lệ sẽ bị "nuốt" mà không ghi log.
Chú ý : Mặc dù rescue() ngăn ngoại lệ được ném ra, nó không ngăn việc ghi log từ các phần khác của ứng dụng.

Cách sử dụng Try/Cath , thường hay dùng

$user_id = $request->id;
    /*
     Khi chúng ta sử dụng Try/Catch xử lý ngoại lệ
    */
    
    try {
        // ✅ Lấy thông tin user từ Id
        $user = User::findOrFail($user_id);
        return Response()->json($user);
    } catch (ModelNotFoundException $e) {
        //👉 getModel (): Lấy mô hình Eloquent bị ảnh hưởng get
        //👉 getIds() : Nhận ID mô hình Eloquent bị ảnh hưởng.
        if($e instanceof Illuminate\Database\Eloquent\ModelNotFoundException){
            return Response()->json(['messages'=>$e->getModel(),'array'=>json_encode($e->getIds())]);
        }
    }
        

Cách ta sử dụng Rescue()

 $result = rescue(function () use ($request) {
        // Giả sử chúng ta đang truy vấn bảng 'users'
        $user_id = $request->id;

        return User::findOrFail($user_id);
    },
    function($e) use ($request){
        // ✅Xử lý ngoại lệ ở đây
        // ví dụ : tạo một session lưu thông báo lỗi
        // 🔑 request()->session()->flash('unsuccessMessage', 'Failed get user id.'.$request->id);  
        if($e instanceof Illuminate\Database\Eloquent\ModelNotFoundException){
            return Response()->json(['messages'=>$e->getModel(),'array'=>json_encode($e->getIds())]);
        }
    },false);

    return Response()->json(['user' => $result]);

Với dụng sử dụng Rescue() giúp cho đoạn code của ta dễ nhìn hơn, dễ kiểm sót được đoạn code.

Bài Viết Liên Quan

Messsage

Nếu bạn thích chia sẻ của tôi, đừng quên nhấn nút !ĐĂNG KÝ