__construct en exceptions
Ik heb een class User genaamd gemaakt. In de construct gooi ik exceptions als er iets fout gaat.
Nu is mijn vraag, zijn deze exceptions op de een of andere manier wel op te halen?
Want het lijkt me dat als er in de __construct van een class iets fout gaat er geen nieuwe instantie van deze class wordt aangemaakt en dus ook niet de exceptions te vangen zijn.
Alvast bedankt voor de hulp.
als je dan toch wil beginnen met OOP ga dan geen exceptions in je constructor aanmaken.. hiervoor gebruik je een aparte functie binnen die class.(try-catch)
Code (php)
1
2
3
4
5
2
3
4
5
try {
$oVar = new Object($sParam);
} catch(Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
$oVar = new Object($sParam);
} catch(Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
Bedoel je zoiets?
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
34
35
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
34
35
<?php
class User
{
private $error = array();
public function __construct($id = '')
{
global $mysqli, $lang;
try
{
...............
if ($mysqli->error)
throw new Exception($lang['mysql']['error'] . $mysqli->error);
...............
return true;
}
catch (exception $e)
{
$this->error[] = $e->getMessage();
return $this->error;
}
}
public function error()
{
$return = "";
foreach ($this->error as $error)
{
$return .= $error;
}
return $return;
}
}
?>
class User
{
private $error = array();
public function __construct($id = '')
{
global $mysqli, $lang;
try
{
...............
if ($mysqli->error)
throw new Exception($lang['mysql']['error'] . $mysqli->error);
...............
return true;
}
catch (exception $e)
{
$this->error[] = $e->getMessage();
return $this->error;
}
}
public function error()
{
$return = "";
foreach ($this->error as $error)
{
$return .= $error;
}
return $return;
}
}
?>
Als ik dan een nieuwe User aanmaak:
En er bestaat geen gebruiker met dat ID, dan wordt er een exception gegooid. Maar deze kan ik dus nooit vangen omdat er geen nieuwe instantie wordt aangemaakt van User(). Tenminste, dat lijkt me logisch.
Moet ik dat anders doen?
Gewijzigd op 22/11/2010 19:24:13 door Ron -
Je moet geen try catch in je class zetten. Alleen excepties gooien. Voor de rest, kijk naar mijn voorbeeld.