__construct en exceptions

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ron -

Ron -

22/11/2010 18:39:36
Quote Anchor link
Ik heb al jaren ervaring met het programmeren in PHP. Ik ben echter sinds kort begonnen met OOP.

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.
 
PHP hulp

PHP hulp

28/01/2023 13:40:57
 
Jaron T

Jaron T

22/11/2010 19:06:34
Quote Anchor link
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)
 
Synaps Framework

Synaps Framework

22/11/2010 19:07:57
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
try {
    $oVar = new Object($sParam);
} catch(Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}


Bedoel je zoiets?
 
Ron -

Ron -

22/11/2010 19:22:35
Quote Anchor link
zo ongeveer, dit is het relevante stukje van mijn class:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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;
    }
}

?>

Als ik dan een nieuwe User aanmaak:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$user
= new User('10');
?>

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 -
 
Synaps Framework

Synaps Framework

22/11/2010 19:25:20
Quote Anchor link
Je moet geen try catch in je class zetten. Alleen excepties gooien. Voor de rest, kijk naar mijn voorbeeld.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.