2013-02-01 8 views
7

私はpublic function __construct()classの内側に、このコードを使用しています:何が問題なのですか、新しい例外を投げますか?

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

BASE_DB_HOSTBASE_DB_USERBASE_DB_PASSが定義されています。私は次のエラーを取得する:

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

私は例外でor建設を使用することはできないだろうか?これを回避するにはどうすればよいですか?

+0

$ connection = mysql_connect(BASE_DB_HOST、BASE_DB_USER、BASE_DB_PASS)またはdie(「データベースに接続できませんでした」); –

+0

私は例外を使いたいです。似たようなことが可能ですか?なぜこれは可能ではないのですか? – Keelan

+3

'throw'は文であり、'または 'の後ろには式が必要です。 – Barmar

答えて

8

次のように使用してみてください、あなたのためにまたは

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

リファレンスnot-その仕事なら、私に知らせて - http://www.php.net/manual/en/language.exceptions.php#81960

0

もう一つの方法は、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

あなたはどこでもそれをやらなければならないのです。 – Keelan

関連する問題