2017-08-23 75 views
0

我想拋出一個錯誤,如果套接字由於某種原因無法執行。捕捉和異常的錯誤

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) OR throw new main_excp(error_pack(3050, 'Failed (socket_create): ' . socket_strerror(socket_last_error($socket)) .'!', true)); 

但是,這不工作,因爲我得到一個錯誤。

如果我使用OR die(),那麼腳本將在那裏退出,並且我將無法在catch{}內相應地處理該錯誤。

這是什麼正確的方法呢?

+0

'throw'是一個[聲明](http://php.net/manual/en/language.exceptions.php),它沒有任何價值。因此,它不能用於表達式。遠離任何教你的教程,「mysql_query()或die()'是錯誤處理。 – axiac

回答

1

PHP Manual說:

socket_create()成功返回套接字資源,或 錯誤FALSE。通過調用 socket_last_error()可以檢索實際的錯誤代碼。此錯誤代碼可能會傳遞到 socket_strerror()以獲取錯誤的文本說明。

所以,你可以檢查$socket爲假值(與$socket === false),並使用功能socket_last_error()socket_sterror()得到錯誤。