繁体   English   中英

引发异常,但是如何在PHP中正确捕获它?

[英]Thrown exception, but how to catch it properly in PHP?

我的问题是我在PHP的class函数中有自己定义的异常,但是可以用非常有趣的方式阻止页面的渲染。 基本上,当捕获异常时,页面不会呈现。 取而代之的是,它给了我一些例外,这与我的期望完全不同。 我有抛出异常的函数,我确实在子类的函数中捕获了该异常,因为我本身不在子类中使用此类。

    function auth($username, $password) { 
    if(!ssh2_auth_password($this->ssh, $username, $password)) {
        throw new Exception('Invalid credentials');
        return false; 
    }

    $fingerprint = ssh2_fingerprint($this->ssh, SSH2_FINGERPRINT_MD5 | SSH2_FINGERPRINT_HEX);

    if (!$fingerprint) {
        throw new Exception('No fingerprint');
        return false;
    }

    return $fingerprint; 
    } 

抛出的异常是“无效的凭据”

子类的函数,该函数被调用

    try {
        $this->ssh->setupConnection($data['connectivity']['serverAdress'], $data['connectivity']['serverPort']);
        $fingerprint = $this->ssh->auth($data['connectivity']['serverLogin'], $data['connectivity']['serverPassword']);         
    } catch (Exception $e) {
        $this->errorAndLog("blah blah blah");
        return false;
    }

子类中的所有内容均正确继承,依此类推

如您所见,我在这里捕获了异常,但是页面仍然无法呈现,并以类似var_dump的样式显示异常:

字符串(18)“无效的凭据”

我不确定是否只是不了解异常或代码在某些时候是错误的

UPD:对不起,出了点问题。 班级不是儿童家长。 具有auth()函数的类包含在“主”中

public function __construct()
{
    $this->ssh = new SSH2();
}

解决了。 只需重新编写代码即可正常工作而不会引发异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM