Fala Rafael, blz?
Cara deu certo o primeiro código:
$this->db->simple_query('SELECT `example_field` FROM `example_table`');
$error = $this->db->error(); // Has keys 'code' and 'message'
Depois fazendo a verificação:
if(!empty($error)) {
throw new Exception('Your message');
}
Aí completo ficou assim:
$this->db->simple_query('SELECT `example_field` FROM `example_table`');
$error = $this->db->error(); // Has keys 'code' and 'message'
if(!empty($error)) {
throw new Exception('Your message');
}
Nesse caso eu to relançando quando ele entra no catch, mas acredito que se deixar o throw direto, funciona também já que é na controller que a aplicação ta pedindo pra mandar pra uma página de erro no bloco catch. Como esta código está na model, acho que funciona. Vou testar depois.
Eu tinha feito uma gambi aqui que funcionou também seguindo esta question do stakeoverflow:
http://stackoverflow.com/questions/7843406/codeigniter-how-to-catch-db-errors
Basicamente, tinha que ir na página error_db.php la nas views de errors e lançar uma exceção de lá..hehehehehe, bem esquisito.
Eu tinha feito a resposta que estava marcada como certa, mas não deu certo.
O meu código precisava do bloco try catch no caso de uma exceção já esperada. Existe uma coluna no mysql que é unique, então se alguem tentar gravar algo que já tenha o mesmo nome no banco vai ser lançado exceção.
Rafael, muito obrigado cara!
Abraço.