Exception nedoputuje do catch
- Jan Endel
- Člen | 1016
Zdravím,
mám na php 5.3 tento obecný kód starající se o databázi:
/**
* zapise data do DB
*
* @param array data data pro ulozeni
* @return int id vlozeneho zaznamu
*/
public function save($data)
{
try {
// insert
if ( !isset($data[$this->pk]) ) {
$this->table->insert($data);
return $this->db->lastInsertId();
}
else {//update
$this->table->find($data[$this->pk])->update($data);
return $data[$this->pk];
}
}
catch(\PDOException $e) {
dump('databazova chyba:' . $e->getMessage());
}
}
a pri vkladani noveho zaznamu pokud dám stejnou hodnotu do sloupce UNIQUE tak mi exception vybubla az do nette ladenky a vyhodi `SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry ‚testcz‘ for key ‚url‘ ` misto zmineneho dumpu, delam neco spatne? Uz jsem z toho tuplachovej. (debug vysviti radek s insert($data);)
Editoval pilec (21. 8. 2011 16:18)
- 22
- Člen | 1478
jn, osobně jsem se do takové konstrukce ještě nedostal a řekl bych, že
se takto vyjímky nepoužívají. Try/catch blok by měl obalovat jen
metodu/kod, která může vyvolat vyjímku. Takže předpokládám, že if/else
žádnou vyjímku nevyvolá a tedy vyjímka se ti vratí do presenteru přes
ten return
Editoval 22 (21. 8. 2011 18:03)
- David Grudl
- Nette Core | 8228
S největší pravděpodobností to bude bug v PDO, takové chování jsem tam taky zaznamenal, reportoval, mělo by být opravené v 5.3.7.