Невозможно обработать исключение SQL с try-catch

Я создаю довольно большой сценарий импорта. Я хочу увидеть любые проблемные (необработанные) SQL-запросы. У меня проблема с поиском неправильных SQL-запросов с блоком PHP try-catch.

У меня есть запрос:

SELECT id FROM tag WHERE name IN () 

Конечно, в нем есть ошибка, поэтому я хочу печатать запросы, подобные этому кодом:

 $sql = "SELECT id FROM tag WHERE name ".$tagsSql.""; try { $query = mysqli_query($this->mysqli, $sql); $result = $query->fetch_assoc(); } catch(Exception $e) { echo 'Problem with: '.$sql; print_r($e); die; } 

При запуске скрипта PHP просто бросает мне это:

 Fatal error: Call to a member function fetch_assoc() on a non-object in C:\www\blackboard-import\index.php on line 227 

Почему эта ошибка не улавливается? Потому что это фатально? Как я могу справиться с такими ситуациями? Я использую mysqli для связи с MySQL.

Это не регулярное исключение, а фатальная ошибка (которая заставляет PHP закрываться). mysqli_query() возвращает false при ошибке, поэтому ваш текущий скрипт терпит неудачу, поэтому решение может быть примерно следующим:

 try { $query = $this->msqli->query($sql); if ($query === FALSE) { throw new Exception($this->mysqli->error); } $result = $query->fetch_assoc(); } catch(Exception $e) { //... }