17.8.1.11 Traitement des erreurs
Si la requête échoue suite à des erreurs SQL (souvent liées à un filtre mal
formé), une exception de type Dcp\Db\Exception
ou Dcp\SearchDoc\Exception
est retournée. Ces deux types d'erreur hérite de Dcp\Exception
.
Les autres erreurs de configuration sont accessibles en utilisant la méthode
::getError()
.
try { $s=new SearchDoc(getDbAccess(), \Dcp\Family\Iuser::familyName); $s->addFilter('us_extmail is not null'); $s->addFilter("pas bon"); // ici une erreur de filtre $results=$s->search(); if ($s->getError()) { // autre erreur de configuration printf("search error : %s",$s->getError()); } } catch (\Dcp\Exception $e) { print($e->getMessage()); }
Résultat :
{DB0005} query prepare error : ERROR: syntax error at or near "bon" LINE 1: ...cked != -1) and (us_extmail is not null) and (pas bon) ORDER...
La classe SearchDoc permet de récupérer les informations sur la requête afin de
débugguer votre recherche. Ces informations sont consultables avec la méthode
DocSearch::getSearchInfo()
après avoir exécuté la recherche.:
$s=new SearchDoc("","IUSER"); $s->addFilter('us_extmail is not null'); $s->search(); print_r($s->getSearchInfo())
Résultat :
Array ( [count] => 4 [query] => select doc128.id, owner, title, ... us_accexpiredate, values, attrids from doc128 where (doc128.archiveid is null) and (doc128.doctype != 'T') and (doc128.locked != -1) and (us_extmail is not null) ORDER BY title LIMIT ALL OFFSET 0; [error] => [delay] => 0.008s )