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

x

Xin chào! Hãy ủng hộ chúng tôi bằng cách nhấp vào quảng cáo trên trang web. Việc này giúp chúng tôi có kinh phí để duy trì và phát triển website ngày một tốt hơn. (Hello! Please support us by clicking on the ads on this site. Your clicks provide us with the funds needed to maintain and improve the website continuously.)

Ngoài ra, hãy đăng ký kênh YouTube của chúng tôi để không bỏ lỡ những nội dung hữu ích! (Also, subscribe to our YouTube channel to stay updated with valuable content!)

Đăng Ký