2012-11-27 47 views
6

假設我有以下一段代碼。如何用PHPseclib捕獲未處理的錯誤?

要測試這個,我更改服務器IP以模擬錯誤消息。下面的IP不存在,所以Unhandled Exception消息是:Cannot connect to 10.199.1.7. Error 113. No route to host

這顯示一個醜陋的屏幕與PHP代碼。是否有可能發現這個錯誤?

try { 
     $ssh = new Net_SSH2('10.199.1.7');   
    if (!$ssh->login('deploy', $key)) { 
     throw new Exception("Failed login"); 
    } 
} catch (Exception $e) { 
    ??? 
} 

回答

11

翻閱資料庫。

user_error('Connection closed by server', E_USER_NOTICE); 

它觸發的錯誤。您可以使用http://php.net/manual/en/function.set-error-handler.php

// Your file.php 
$ssh = new Net_SSH2('10.199.1.7');   
$ssh->login('deploy', $key); 

// bootstrap.php 
// This will catch all user notice errors!!! 
set_error_handler ('errorHandler', E_USER_NOTICE) 

function errorHandler($errno, $errstr, $errfile, $errline) { 
    echo 'Error'; 
    // Whatever you want to do. 
} 
+0

難以解決這個問題。我將如何去實現這個到我現有的代碼上面? – luckytaxi

+0

已更新爲包含實施。 –

+0

所以基本上在'file.php'裏面包含'boostrap.php'文件,它應該工作? – luckytaxi

0

你可以在你前面使用@函數調用。 @ operator

+4

使用@總是一個壞主意! –

相關問題