Как использовать попробуйте поймать в этой ситуации - PullRequest
0 голосов
/ 29 апреля 2020

Я хотел бы удалить другие отношения, даже если какое-либо из предыдущих удалений не удалось. Я использовал много попыток / поймать, чтобы достичь этого. Есть ли способ уменьшить количество try-catch в моем коде или сделать это без try-catch?

    public function delete_live_event(Request $request){
        try{
            $user = User::find($request->auth_user_id);

            if(!$request->journey_item_id){
                return response()->json(['StatusMessage' => 'Bir hata oluştu !', 'StatusCode' => 401,'error'=>'live_event_id gönderilmedi'], 401);
            }
            $journey_item = JourneyItem::find($request->journey_item_id);
            if ($journey_item == null) {
                return response()->json(['StatusMessage' =>  __('contents.not_found'), 'StatusCode' => 404], 404);
            }

            /** Assigned Users deleted **/
            try{
                UserJourney::where('as_journey_id',$journey_item->journey->id)->delete();
            }catch (\Exception $e){ //log 
            }

            /** journey deleted **/
            try{
                $journey_item->journey()->delete();
            }catch (\Exception $e){
               //Log
            }

            /** content deleted **/
            try{
                $journey_item->content()->delete();
            }catch (\Exception $e){//Log
            }

            /** notifications deleted **/
            try{
                UserJourneyItemNotification::where('as_journey_item_id', $journey_item->id)->delete();
            }catch (\Exception $e){//Log
            }

            /** item deleted **/
            try{
                $journey_item->item()->delete();
            }catch (\Exception $e){//Log
            }

            /** journey_item deleted **/
            $journey_item->delete();

            return response()->json(['StatusMessage' => 'Live event is deleted succesfuly', 'StatusCode' => 200], 200);
        }catch (\Exception $e){
            //TODO error log
            return response()->json(['StatusMessage' => 'Bir hata oluştu !', 'StatusCode' => 400], 401);
        }
    }

1 Ответ

1 голос
/ 29 апреля 2020

Try / Catch обычно используется в ситуации, когда вы хотите перехватить ошибку, чтобы остановить дальнейшую обработку. Если каждый из элементов в вашем списке может быть удален, даже если другие элементы не могут быть удалены, тогда нет никакой причины использовать try / catch вообще.

Вам также не нужно переносить основную функцию в блоке try / catch, поскольку единственная ошибка, которая может возникнуть в этом коде, - это если вы вызвали метод, которого не было в вашем объекте. Это будет ошибка кода, которая потребует исправления. Это не тот тип ошибки, который вы хотите разрешить продолжить, поскольку отсутствующий метод является ошибкой кода и должен быть исправлен.

...