如何使用PHPseclib捕获未处理的错误?
假设我有下面的一段代码 为了测试这一点,我更改了服务器IP以模拟错误消息。下面的IP不存在,因此如何使用PHPseclib捕获未处理的错误?,php,phpseclib,Php,Phpseclib,假设我有下面的一段代码 为了测试这一点,我更改了服务器IP以模拟错误消息。下面的IP不存在,因此未处理的异常消息是:无法连接到10.199.1.7。错误113。没有到主机的路由 这将显示一个带有PHP代码的丑陋屏幕。有可能捕捉到这个错误吗 try { $ssh = new Net_SSH2('10.199.1.7'); if (!$ssh->login('deploy', $key)) { throw new Exception("Failed
未处理的异常消息是:无法连接到10.199.1.7。错误113。没有到主机的路由
这将显示一个带有PHP代码的丑陋屏幕。有可能捕捉到这个错误吗
try {
$ssh = new Net_SSH2('10.199.1.7');
if (!$ssh->login('deploy', $key)) {
throw new Exception("Failed login");
}
} catch (Exception $e) {
???
}
您可以在函数调用之前使用@ 浏览了图书馆
user_error('Connection closed by server', E_USER_NOTICE);
它会引发错误。您可以使用
e、 g
使用@总是一个坏主意!这就是所谓的沉默错误,这不是解决问题的方法,只是忽略它,我很难弄清楚这一点。我将如何在上面的现有代码中实现它?因此基本上将boostrap.php
文件包含在file.php
中,它应该可以工作吗?对用户错误的提示很好。当我看到这个问题时,我去谷歌搜索了一下,并在Github上找到了某人的分叉实现,使用的是异常,而不是SourceForge上的官方实现。我的答案100%错了,所以我把它标记为删除。感谢您的捕获和+1Np,我也首先找到了git hub版本。这正是我要找的。谢谢
// 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.
}