2012-11-27 23 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

@を使用することは常に悪い考えです! –

関連する問題