2016-04-29 7 views
2

私の問題は、私が捕まえることができるPHPのクラス '関数で自分自身で定義された例外がありますが、ページが非常に興味深い方法でレンダリングされるのを止めることです。 基本的に、例外がキャッチされている場合、ページはレンダリングされません。代わりに、それは私の期待とはまったく異なる例外の文字列を私に与えます。 私はこのクラス自体を使用していないので、子クラスの関数で例外をスローするこの関数を持っています。例外がスローされましたが、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; 
    } 

すべてが

に正しくので、継承と呼ばれている「無効な資格情報」

子クラスの関数であります

ご覧のとおり、私はexceptioをキャッチしていますnはここではなく、ページがまだレンダリングとのvar_dumpのようなスタイルで、私の例外を表示しません:私はちょうどないかはわからない

文字列(18)「無効な資格情報」

例外について何かを見つけ出すか、コードが間違っている。

UPD:申し訳ありませんが、間違っています。クラスは子 - 親ではありません。 auth()のクラスは、「メイン」クラスに含まれています。

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

'catch(Exception $ e){新しい例外を投げる($ e-> getMessage()); } 'または' catch(Exception $ e){新しい例外を投げる( 'blah blah blah'); } '? –

+0

@Hendra Nucleo何ですか? –

答えて

0

解決済み。例外を投げることなく動作するようにコードを修正しました。

関連する問題