try throw catch...juist gebruik?
Ik probeer de dingen me eigen te maken vanuit een boek, maar ik denk dat het in het boek fout staat misschien kan iemand mij vertellen of ik het nu wel goed toepas?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
public function genereer(){
try {
$sSql = 'SELECT * FROM categorie';
$oDB = new DB();
$oResult = $oDB->query($sSql);
while($aRow = $oResult->fetch(PDO::FETCH_ASSOC)) {
$oCategorie = new Categorie();
$oCategorie->setId($aRow['cat_id']);
$oCategorie->setNaam($aRow['naam']);
$this->voegElementToe($oCategorie);
}
$oDB = null;
$oResult = null;
} catch (PDOException $e) {
$oDB = null;
$oResult = null;
// maak de lijst leeg
$this->m_aLijst = array();
throw new WeblogException($e->getMessage());
}
catch (WeblogException $e) {
$e->log();
} catch (Exception $e) {
// log de fout
$oException = new WeblogException();
$oException->convertException($e);
$oException->log();
}
}
?>
public function genereer(){
try {
$sSql = 'SELECT * FROM categorie';
$oDB = new DB();
$oResult = $oDB->query($sSql);
while($aRow = $oResult->fetch(PDO::FETCH_ASSOC)) {
$oCategorie = new Categorie();
$oCategorie->setId($aRow['cat_id']);
$oCategorie->setNaam($aRow['naam']);
$this->voegElementToe($oCategorie);
}
$oDB = null;
$oResult = null;
} catch (PDOException $e) {
$oDB = null;
$oResult = null;
// maak de lijst leeg
$this->m_aLijst = array();
throw new WeblogException($e->getMessage());
}
catch (WeblogException $e) {
$e->log();
} catch (Exception $e) {
// log de fout
$oException = new WeblogException();
$oException->convertException($e);
$oException->log();
}
}
?>
Alvast bedankt...
Moest je je code nu eens duidelijker laten inspringen, dan zouden we kunnen zien waar de fout zit.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
public function genereer(){
try {
$sSql = 'SELECT * FROM archief';
$oDB = new DB();
$oResult = $oDB->query($sSql);
while($aRow = $oResult->fetch(PDO::FETCH_ASSOC)) {
$oArchief = new Archief();
$oArchief->setId($aRow['archief_id']);
$oArchief->setNaam($aRow['naam']);
$this->voegElementToe($oArchief);
}
$oDB = null;
$oResult = null;
} catch (PDOException $e) {
$oDB = null;
$oResult = null;
// maak de lijst leeg
$this->m_aLijst = array();
throw new WeblogException($e->getMessage());
}
catch (WeblogException $e) {
$e->log();
} catch (Exception $e) {
// log de fout
$oException = new WeblogException();
$oException->convertException($e);
$oException->log();
}
}
?>
public function genereer(){
try {
$sSql = 'SELECT * FROM archief';
$oDB = new DB();
$oResult = $oDB->query($sSql);
while($aRow = $oResult->fetch(PDO::FETCH_ASSOC)) {
$oArchief = new Archief();
$oArchief->setId($aRow['archief_id']);
$oArchief->setNaam($aRow['naam']);
$this->voegElementToe($oArchief);
}
$oDB = null;
$oResult = null;
} catch (PDOException $e) {
$oDB = null;
$oResult = null;
// maak de lijst leeg
$this->m_aLijst = array();
throw new WeblogException($e->getMessage());
}
catch (WeblogException $e) {
$e->log();
} catch (Exception $e) {
// log de fout
$oException = new WeblogException();
$oException->convertException($e);
$oException->log();
}
}
?>
zo dan
Gewijzigd op 01/01/1970 01:00:00 door Paul de Zwaan
Zo dus:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
public function genereer(){
try {
$sSql = 'SELECT * FROM archief';
$oDB = new DB();
$oResult = $oDB->query($sSql);
while($aRow = $oResult->fetch(PDO::FETCH_ASSOC)) {
$oArchief = new Archief();
$oArchief->setId($aRow['archief_id']);
$oArchief->setNaam($aRow['naam']);
$this->voegElementToe($oArchief);
}
$oDB = null;
$oResult = null;
} catch (PDOException $e) {
$oDB = null;
$oResult = null;
// maak de lijst leeg
$this->m_aLijst = array();
throw new WeblogException($e->getMessage());
} catch (WeblogException $e) {
$e->log();
} catch (Exception $e) {
// log de fout
$oException = new WeblogException();
$oException->convertException($e);
$oException->log();
}
}
?>
public function genereer(){
try {
$sSql = 'SELECT * FROM archief';
$oDB = new DB();
$oResult = $oDB->query($sSql);
while($aRow = $oResult->fetch(PDO::FETCH_ASSOC)) {
$oArchief = new Archief();
$oArchief->setId($aRow['archief_id']);
$oArchief->setNaam($aRow['naam']);
$this->voegElementToe($oArchief);
}
$oDB = null;
$oResult = null;
} catch (PDOException $e) {
$oDB = null;
$oResult = null;
// maak de lijst leeg
$this->m_aLijst = array();
throw new WeblogException($e->getMessage());
} catch (WeblogException $e) {
$e->log();
} catch (Exception $e) {
// log de fout
$oException = new WeblogException();
$oException->convertException($e);
$oException->log();
}
}
?>
Hier zie ik niets verkeerd in.
Je probeert een stukje code en vangt daarna exceptions op.
Eerst een PDOexeption, daarna een WeblogExeption en daarna alle andere soorten.
Enkel bij een PDOexception, ga je een weblogexception gaan gooien.
Lijkt mij beetje vreemde manier van exceptions oplossen, maarja, je zult er vast wel je redenen voor hebben.
Waarom maak je in je laatste catch een nieuw WeblogException object aan? Gebruik je die alleen om te loggen? Daar is een Exception namelijk niet voor bedoeld...
Een exception moet je pas opvangen wanneer je een ander code-path kan lopen, wanneer je een alternatieve oplossing hebt voor dat wat je wou proberen, maar wat blijkbaar fout ging. Dat kan zijn een andere manier proberen om iets op te halen, maar ook een foutmelding loggen en een "shit happens" pagina tonen :)
De PDOException zou je in deze method kunnen afvangen misschien, zoals je nu doet, en inderdaad, je kan dan weer een WeblogException gooien. Maar ik zou die fout door laten vallen tot op een niveau veel hoger, waar je (een deel van de) pagina aan het opbouwen bent, en daar dat opbouwen vervangen met een melding. Daar kan je dan ook je WeblogException loggen (btw: logt de exception zichzelf?)
Gewijzigd op 01/01/1970 01:00:00 door Paul de Zwaan