2013-02-01 11 views
7

Sto usando questo codice all'interno del public function __construct() di un class:Cosa c'è di sbagliato o lanciare una nuova eccezione?

$this->mConnection = mysql_connect(BASE_DB_HOST,BASE_DB_USER,BASE_DB_PASS) or throw new Exception("Couldn't connect to database."); 

BASE_DB_HOST, BASE_DB_USER e BASE_DB_PASS sono definiti. Ottengo il seguente errore:

Parse error: syntax error, unexpected T_THROW in /home/... on line 6

Am non mi ha permesso di usare il or costruzione con eccezioni? Come posso risolvere questo?

+0

'$ connessione = mysql_connect (BASE_DB_HOST, BASE_DB_USER, BASE_DB_PASS) or die ("Impossibile connettersi al database.")'; –

+0

Voglio usare un'eccezione. È qualcosa di simile possibile? E perché non è possibile? – Keelan

+3

'throw' è un'istruzione,' o' deve essere seguito da un'espressione. – Barmar

risposta

8

provare a utilizzare in questo modo e fammi sapere se il suo lavoro per voi o non-

<?php 
function throwException() { 
    throw new Exception("Couldn't connect to database."); 
} 

$this->mConnection = mysql_connect(BASE_DB_HOST,BASE_DB_USER,BASE_DB_PASS) OR throwException(); 
?> 

Riferimento - http://www.php.net/manual/en/language.exceptions.php#81960

0

Un altro modo è quello di generare un'eccezione in una funzione anonima dopo l'operatore logico or .

$this->mConnection = mysql_connect(BASE_DB_HOST,BASE_DB_USER,BASE_DB_PASS) or call_user_func(function() { throw new Exception("Couldn't connect to database."); }); 
+0

Questo è un sacco di digitazione se devi farlo ovunque ... – Keelan