2013-02-01 36 views
7

Tôi đang sử dụng mã này bên trong public function __construct() của một class:Có gì sai với hoặc ném ngoại lệ mới?

$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_USERBASE_DB_PASS được xác định. Tôi nhận được lỗi sau:

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

Tôi không được phép sử dụng cấu trúc or có ngoại lệ? Làm thế nào tôi có thể giải quyết vấn đề này?

+0

'$ connection = mysql_connect (BASE_DB_HOST, BASE_DB_USER, BASE_DB_PASS) hoặc chết (" Không thể kết nối với cơ sở dữ liệu. ")'; –

+0

Tôi muốn sử dụng ngoại lệ. Là một cái gì đó tương tự có thể? Và tại sao điều này không thể? – Keelan

+3

'throw' là một câu lệnh,' hoặc' cần được theo sau bởi một biểu thức. – Barmar

Trả lời

8

Hãy thử sử dụng như thế này và cho tôi biết nếu công việc của mình cho bạn hay không-

<?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

Một cách khác là để ném một ngoại lệ trong một chức năng ẩn danh sau khi toán tử logic 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

Đó là rất nhiều cách gõ nếu bạn phải làm điều đó ở khắp mọi nơi ... – Keelan

Các vấn đề liên quan