2016-08-08 72 views
0

Mein Zweifel ist, ob die vorbereitete Anweisung innerhalb oder außerhalb eines try/catch-Blocks sein sollte.Vorbereitete Aussage innerhalb oder außerhalb eines Versuchs/Cach?

(dies ist ein Beispiel Methode aus meiner Klasse User)

Soll ich das tun?

public function getEmail($id_user) { 
    $this->_sql = 'SELECT Email FROM '.TBL_USERS.' WHERE IdUser = :id_user'; 
    $stmt = $this->_db->prepare($this->_sql); 
    try { 
    $stmt->bindParam(':id_user', $id_user, PDO::PARAM_INT); 
    $stmt->execute(); 
    $row = $stmt->fetchObject(); 
    if (is_object($row)) { 
     return $row->Email; 
    } 
    return NULL; 
    } catch (PDOException $e) { 
    throw $e; 
    } 
} 

oder das?

+1

immer im 'try' vorbereiten. SQL-Syntaxfehler können/werden schleichen. –

+2

Wenn Sie nichts tun werden * sinnvoll * mit der Ausnahme dann fangen Sie es überhaupt nicht. Das erneute Auslösen der Ausnahme wird den Stack-Trace nur noch schwieriger lesbar machen. – Sammitch

Antwort

1

Die prepare() - Methode kann möglicherweise eine PDOException auslösen, daher sollten Sie den Aufruf zur Vorbereitung innerhalb des try-Blocks einschließen. In beiden Beispielen werfen Sie jedoch nur die Ausnahme zurück. Wenn Sie die Ausnahme innerhalb des Catch-Blocks nicht behandeln, wird der Effekt derselbe sein.