Comment traiter les exceptions dans le constructeur le mieux?

Comment traiter l'exception de la meilleure façon de construire?

option1 - catch exception, où l'objet créé:

class Account {
    function __construct($id){
        if(empty($id)){
            throw new My_Exception('id can\'t be empty');
        }

        //...
    }
}

class a1 {
    function just($id){
    try {
        $account = new Account($id);
    }
    catch(Exception $e){
        $e->getMessage();
    }
}

class a2{
    function just($id){
    try {
        $account = new Account($id);
    }
    catch(Exception $e){
        $e->getMessage();
    }
}

option2: capture d'exception à l'intérieur de __construct

class Account{
    function __construct($id){
    try{
        if(empty($id)){
            throw new My_Exception('id can\'t be empty');
        }

        //...
    }
    catch(My_Exception $e) {

    }
}

S'il vous plaît écrire dans les cas qui doivent être utilisés option1 et qui doit être utilisé option2 ou d'autres de meilleure solution.

Grâce

Je ne suis pas de vote pour le fermer car je ne suis pas sûr que tous les détails de votre question, mais en voici une très étroitement liés l'un: stackoverflow.com/questions/2685857/php-exceptions-in-classes (personnellement, j'aime la méthode alternative @Gordon présente dans sa réponse à l'aide de ::create() meilleur)
merci du link!

OriginalL'auteur Yosef | 2010-09-05