1

エラーを呼び出すスクリプトがあります: Fatal error: Call to a member function GetData() on a non-object in .... このエラーをキャッチしようとしていますが、うまくいきません。以下のコードを見てください。

try {

    if ($data = $m->users()->GetData()) {

    print_r( $data );

}

}
catch (Exception $e) {

    echo 'Hey, it is an error man!';

}

どうやって捕まえる?PHP のすべてのエラーを無効にすることは不可能です。つまり、このエラーが本当に必要な場合があるということです。

upd 1.まあ、解決策は簡単です:

if (is_object($m->users()) && ($data = $m->users()->GetData())) {
    print_r( $data );
} else {
echo 'Hey, it is an error man!';

皆さん、ありがとうございました!

4

3 に答える 3

1

以下を使用してエラーを回避し、シャットダウンエラーハンドラーを使用する必要があります。

try {

    $obj =  $m->users();
    if ($data =$obj->GetData()) {

    print_r( $data );

}

}
catch (Exception $e) {

    echo 'Hey, it's an error man!';

}

//エラーハンドラをシャットダウン

function shutdownErrorHandler() {
    $error = error_get_last();
    if ($error !== NULL) {
      echo "Error: [SHUTDOWN] error type: " . $error['type'] . " | error file: " . $error['file'] . " | line: " . $error['line'] . " | error message: " . $error['message'] . PHP_EOL;
    } else {
       echo "Normal shutdown or user aborted";
    }
}

register_shutdown_function('shutdownErrorHandler');
于 2012-08-25T07:27:34.793 に答える
1

PHP では、エラーと例外はさまざまな分離された世界からのものです。PHP : 例外 vs エラー?

メソッドを呼び出す前に、返されたオブジェクトを確認できますGetData()

try {
    if (is_object($m->users()) && ($data = $m->users()->GetData())) {
        print_r( $data );
    }
} catch (Exception $e) {
    echo 'Hey, it's an error man!';
}
于 2012-08-25T07:22:28.843 に答える
0

致命的なエラーは例外と同じではなく、通常は回復できません。ただし、通常は回避可能であり、PHP5 のset_error_handler関数を介して「キャッチ可能」な場合もあります。

ただし、ベスト プラクティスは、オブジェクトのメソッドを呼び出す前に、有効なオブジェクトをチェックする作業を単純に行うことです。

于 2012-08-25T07:27:08.873 に答える