Я использую CodeIgniter и пытаюсь выполнить код в блоке try / catch, полагая, что ошибки остановят выполнение кода после ошибки до тех пор, пока не будет достигнут блок catch, как вы обычно думаете, что он будет работать.
Однако при обнаружении ошибок PHP код продолжается.Это приводит к выполнению команды завершения транзакции базы данных, что очень плохо, если есть ошибка и все инструкции не были выполнены должным образом.Например, у меня есть этот код, который выполняется в запросе ajax:
// start transaction
$this->db->trans_start();
try {
$this->M_debug->fblog("firstName=" . $triggerOpts->{'firstXXXName'});
$data = array("test_col" => 123);
$this->db->where("id", 4);
$this->db->update("my_table", $data);
// if got this far, process is ok
$status = "process_ok";
// complete transaction
$this->db->trans_complete();
} catch (Exception $ex) {
// output the error
$this->M_debug->logError($ex);
}
В этом коде я пытаюсь выполнить обновление базы данных как часть транзакции.Мой вызов $this->M_debug->fblog()
предназначен только для записи переменной в консоль PHP, и я специально попытался зарегистрировать переменную, которая не существует.
Это вызывает ошибку PHP, которая, по-моему, является фатальной ошибкой, и желаемый результат состоит в том, что код после команд журнала завершается ошибкой, а транзакция не завершается.Однако после этой ошибки, несмотря на сообщение об ошибке PHP в консоли Chrome, код продолжает работать правильно, база данных обновляется и транзакция завершается.Был бы признателен за любую помощь в том, как я мог бы предотвратить это.
Большое спасибо, G
РЕДАКТИРОВАТЬ -
В соответствии с просьбой heres fblog (), это просто Chromeконсольный журнал запроса переменной
public function fblog( $var ) {
ChromePhp::log( $var );
}