Как отловить ошибки при чтении ячеек из файла?
У меня есть функция для чтения данных из ячеек файла и записи их в базу данных. Мне необходимо создать обработчик, который будет проверять: правильный ли формат файла нам послали. Знаю, что можно это организовать через 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]);
}
}
}