Captura de errores de toba

Hola, quería hacerles un pregunta: Cuando toba muestra los errores dice algo como

SQLSTATE: db_23505

CODIGO: 7

MENSAJE: SQLSTATE[23505]: Unique violation: 7 ERROR: llave duplicada viola restricción de unicidad «apex_usuario_pk>>

quería saber si por código se puede capturar exactamente el número de error para poder poner un mensaje que sea más comprensible para el usuario (en este caso sería “el usuario ya existe”).
Pruebo con la función try{}catch pero esta función captura cualquier error y puede mostrarme el error “el usuario ya existe” cuando en realidad puede ser alguna otra cosa.

Gracias por la ayuda!

Hola Victor,

para mejorar los mensajes de error que se obtienen de la base lo que existe en Toba es lo que denominamos parser de errorres, de partida se envia una clase ‘toba_parser_error_db_postgres7’ la cual captura algunos errores y muestra cual es la forma de hacerlo. Para hacer uso de esta funcionalidad hay que ir al tab de fuentes de datos en el editor y seleccionando la fuente adecuada (base de negocio) en la parte inferior del formulario se tilda el elemento que dice ‘Parsea Errores’, eso hara que se utilice el parser basico que se envia con toba para dicho motor.

Lo que pueden hacer ustedes es extender dicha clase y luego en el contexto_ejecucion hacer una llamada como la siguiente para asignarle el parser de errores a la fuente de datos.

toba::db()->set_parser_errores(new toba_parser_error_db_postgres7_mio());

Saludos

tambien podes hacer esto… espero que te sirva

function guardar()
{
//$this->dep(‘dr_pagos’)->sincronizar();
try{
$this->dep(‘dr_pagos’)->sincronizar();
$this->resetear();
}catch (toba_error_db $error) {
$sql_state = $error->get_sqlstate();
if ($sql_state == ‘db_23505’) {
//throw new toba_error_usuario(‘Ya existe el Numero de Pago’);
$this->informar_msg(“Ya existe el Numero de Pago”);
} else {
throw $error;
}
}
}

Gracias Panchito!!! un excelente método de capturar errores!!