2012-11-27 16 views
6

Sagen wir, ich habe das folgende Stück Code.Wie können Sie nicht behandelte Fehler mit PHPseclib abfangen?

Um dies zu testen, ändere ich die Server-IP, um die Fehlermeldungen nachzuahmen. Die folgende IP-Adresse ist nicht vorhanden. Die Unhandled Exception Nachricht lautet: Cannot connect to 10.199.1.7. Error 113. No route to host

Dies zeigt einen hässlichen Bildschirm mit PHP-Code. Ist es möglich, diesen Fehler zu finden?

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

Antwort

11

Sah durch Bibliothek.

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

Es löst Fehler aus. Sie können diese Fehler unter Verwendung von http://php.net/manual/en/function.set-error-handler.php

z.

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

Es ist schwer, dies herauszufinden. Wie würde ich das in meinen bestehenden Code implementieren? – luckytaxi

+0

aktualisiert, um die Implementierung einzuschließen. –

+0

Also im Grunde die 'boostrap.php' Datei in' file.php' und es sollte funktionieren? – luckytaxi

0

Sie können @ vor Ihnen Funktionsaufruf verwenden. @ operator

+4

Die Verwendung von @ ist immer eine schlechte Idee! –