PHP:
1
2
3
4
5
6
7
8
9
10
11
12
| final protected function _insert($fieldVals2SkipQuoting = array()) { if ($this instanceof DataObjectAutoGenerateData) { $this->generateData(); } try{ $this->validateData(); } catch (BCMSDataException $e) { return false; } [...] |
In bovenstaand gedeelte wordt onder de functie $this->validateData(), de data van mijn object gevalideerd. Wanneer de validatie faalt, worden er exceptions gegooid. Hier onder een stukje van die functie
PHP:
1
2
3
4
| if (empty($this->name)) { MsgHandler::addMsg( new Msg(Msg::Error, 'Fout in paginanaam' ,'waarde mag niet leeg zijn.') ); throw new BCMSDataException('no pagename defined'); } |
Wanneer ik nu mijn object submit, wordt de functie validateData() uitgevoerd en exceptions worden gegooid, en gevangen (ik krijg immers mijn foutmelding via $e->getMessage()). De return false wordt echter genegeerd en de code onder de return wordt gewoon uitgevoerd. Wanneer ik een exit in het catch blok plaats wordt deze gewoon uitgevoerd. Waarom returnt het catch blok niet uit de functie?