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

时间:2016-04-29 08:00:23

标签: php exception try-catch

我的问题是我在课堂上有自己定义的异常'我能够捕获的PHP函数,但它以非常有趣的方式停止渲染页面。 基本上,当捕获异常 时,页面不会呈现。而不是它只是给了我一些异常的东西,这与我的期望完全不同。 我有这个函数抛出异常,我在子类中抓住了这个函数'函数,因为我不使用这个类本身,只是在孩子一个。

    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()功能的班级被包含在" main"一个

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

1 个答案:

答案 0 :(得分:0)

解决。只需重新编写代码即可工作而不会抛出异常。