Как отловить ошибки при чтении ячеек из файла?

У меня есть функция для чтения данных из ячеек файла и записи их в базу данных. Мне необходимо создать обработчик, который будет проверять: правильный ли формат файла нам послали. Знаю, что можно это организовать через try throw catch , но слишком муторно проверять каждую ячейку, есть какой-то универсальный метод, который будет ловить ошибку без throw ?

Код обработчика файла

public function tables_input($file,$file_id,$user,$date,$service){
     $reader = IOFactory::createReaderForFile($file);
     $reader->setReadDataOnly(true);
     $spreadsheet = $reader->load($file);
     $cells = $spreadsheet->getActiveSheet()->getCellCollection();
     $id_get_info_method = 1;
     $indication_begin = 0;
     $service = DB::table('reference.services')->where('name',$service)->value('id');
     for ($row = 4; $row <= $cells->getHighestRow(); $row++){
         $date_begin = $cells->get('W'.$row)->getValue();
         $date_begin = "20".substr($date_begin,-2,2)."-".substr($date_begin,3,2)."-".substr($date_begin,0,2);
         $date_end = $cells->get('X'.$row)->getValue();
         $date_end = "20".substr($date_end,-2,2)."-".substr($date_end,3,2)."-".substr($date_end,0,2);
         $organization = $cells->get('B'.$row)->getValue();
         $organization =  DB::table('reference.organizations')->where('name',$organization)->value('id');
         $street = $cells->get('E'.$row)->getValue();
         $building = $cells->get('F'.$row)->getValue();
         $building = DB::select('SELECT building.id FROM(SELECT id from adress.street WHERE id_settlement = 1 AND name = ?) street JOIN adress.building building ON street.id=building.id_street WHERE building.name = ?',[$street,$building]);
         $building = $building[0]->id;
         $sum = $cells->get('T'.$row)->getValue();
         $nds = $cells->get('S'.$row)->getValue();
         $counter = substr($cells->get('J'.$row)->getValue(),0,6);
         if($cells->get('Q'.$row)->getValue()=='Да'){
           $capacity = $cells->get('K'.$row)->getValue();
           $indication_end  = $cells->get('K'.$row)->getValue();
           $id_counter =  DB::table('main.counters')->where('factory_number',$counter)->value('id');
           DB::table('main.indications')->insert(['id_counter'=> $id_counter,'date_begin'=>date($date_begin),'date_end'=>date($date_end),'indication_begin'=>$indication_begin,'indication_end'=>$indication_end,'id_user'=>$user,'id_get_info_method'=>$id_get_info_method,'id_file'=>$file_id,'date'=>$date,]);
           DB::table('main.charges')->insert(['id_counter'=> $id_counter,'capacity'=>$capacity,'id_organization'=> $organization,'id_service'=>$service,'id_building'=>$building,'sum' => $sum, 'nds' =>$nds, 'date_begin'=>date($date_begin),'date_end'=>date($date_end),'id_get_info_method'=>$id_get_info_method,'id_file'=>$file_id,'date'=>$date]);
          }
          else {
            DB::table('main.indications')->insert(['date_begin'=>date($date_begin),'date_end'=>date($date_end),'indication_begin'=>$indication_begin,'id_user'=>$user,'id_get_info_method'=>$id_get_info_method,'id_file'=>$file_id,'date'=>$date]);
            DB::table('main.charges')->insert(['id_organization'=> $organization,'id_service'=>$service,'id_building'=>$building,'sum' => $sum, 'nds' =>$nds, 'date_begin'=>date($date_begin),'date_end'=>date($date_end),'id_get_info_method'=>$id_get_info_method,'id_file'=>$file_id,'date'=>$date]);
          }
     }
   }

Ответы (0 шт):