How to catch un-handled errors with PHPseclib?
Asked Answered
P

2

8

Let's say I have the following piece of code.

To test this, I change the server IP to mimic the error messages. The IP below doesn't exist so the Unhandled Exception message is: Cannot connect to 10.199.1.7. Error 113. No route to host

This displays an ugly screen with PHP code. Is it possible to catch this error?

try {
      $ssh = new Net_SSH2('10.199.1.7');        
  if (!$ssh->login('deploy', $key)) {
       throw new Exception("Failed login");
  }
} catch (Exception $e) {
     ???
}
Pantin answered 27/11, 2012 at 16:51 Comment(0)
C
14

Looked through library.

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

It triggers errors. You can handle those errors using http://php.net/manual/en/function.set-error-handler.php

e.g.

// 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.
}
Ceja answered 27/11, 2012 at 17:8 Comment(4)
Having a hard time figuring this out. How would i go about implementing this into my existing code above?Pantin
So basically include the boostrap.php file inside file.php and it should work?Pantin
Good call on the user_errors. I went Google-ing when I saw this question and landed on someone's forked implementation on Github, using exceptions, rather than the official one on SourceForge. My answer is 100% wrong so I marked it for deletion. Thanks for the catch and +1Ragged
Np, I found git hub version first too.Ceja
V
0

You can use @ in front of you function call. @ operator

Vaginitis answered 27/11, 2012 at 16:55 Comment(2)
Using @ is always a bad idea!Ceja
this is called silencing errors, and that's not a way to fix a problem, it's only to ignore itKersten

© 2022 - 2024 — McMap. All rights reserved.