2013-02-01 19 views
7

Używam tego kodu wewnątrz public function __construct() tematyce class:Co jest nie tak z nowym Wyjątkiem?

$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 i BASE_DB_PASS są zdefiniowane. Pojawia się następujący błąd:

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

nie wolno mi używać budowę or z wyjątkami? Jak mogę to obejść?

+0

'$ connection = mysql_connect (BASE_DB_HOST, BASE_DB_USER, BASE_DB_PASS) or die ("Nie można połączyć się z bazą danych.")'; –

+0

Chcę użyć wyjątku. Czy coś podobnego jest możliwe? I dlaczego nie jest to możliwe? – Keelan

+3

'throw' jest instrukcją,' lub 'musi następować po wyrażeniu. – Barmar

Odpowiedz

8

Spróbuj użyć takiego i daj mi znać, jeśli jego praca dla Ciebie lub not-

<?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(); 
?> 

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

0

Innym sposobem jest wyjątek w anonimowej funkcji po operatora logicznego 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

To dużo pisania, jeśli musisz to robić wszędzie ... – Keelan