我想删除其他关系,即使前面的任何删除都失败了。我已经使用了很多try/catch来实现这一点。有没有一种方法可以减少代码中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);
}
}发布于 2020-04-29 21:35:24
Try / Catch通常用于您想要捕获错误以停止进一步处理的情况。如果列表中的每一项都可以删除,即使其他项不能删除,那么根本就没有理由使用try/catch。
您也不需要将main函数包装在try/catch块中,因为在该代码中发生的唯一失败就是调用了对象中不存在的方法。这将是一个代码故障,需要纠正。这不是您希望允许继续处理的错误类型,因为缺少的方法是代码错误,应该进行更正。
https://stackoverflow.com/questions/61502329
复制相似问题