2013-07-25 3 views
0

QueryPath를 사용하여 웹 사이트의 일부 데이터를 고칩니다. 그러나 매우 자주 아래의 오류 메시지가 나타나고 스크립트가 종료됩니다.QueryPath에서 PHP 잡기 가능 치명적인 오류를 무시하는 방법?

PHP Catchable fatal error: Argument 1 passed to DOMXPath::__construct() must be an instance of DOMDocument, null given, called in ....inc/QueryPath/QueryPath/CSS/DOMTraverser.php on line 417 and defined in ....inc/QueryPath/QueryPath/CSS/DOMTraverser.php on line 467 

오류가 나에게 어떤 단서를 제공하지 않는 등의 오류에서 오는 코드의 어떤 라인,하지만 난 @htmlqp으로 htmlqp 명령 접두어 시도가 $outHtml = htmlqp($outHtml);에서오고 가정합니다.

이것은 작동하지 않았으므로, 나는 htmlqp를 catch {} 문으로 래핑 해 보았습니다.이 문장은 도움이되지 않았습니다.

내가 원한 것은 오류를 무시하고 스크립트 폭탄을 꺼내는 것보다 계속하기 만하면됩니다. 도움!

+0

가능한 복제본 http://stackoverflow.com/questions/2468487/how-can-i-catch-a-catchable-fatal-error-on-php-type-hinting – bitWorking

+0

당신은'htmlqp'를 다음과 같이 'catch'를'try'로 감싸고'catch' 블록에서 처리하십시오. – mc10

답변

2

치명적인 오류입니다. 잡아주세요.

잡으면 전체 스택 트레이스를 얻을 수 있습니다.

예는 :

try { 
    thisfunctionthrowsanexception(); 
} catch (Exception $e) { 
    var_dump(get_class($e)); 
    echo $e->getTraceAsString(); 
} 

@ 오류를 숨 깁니다. 당신은 그걸 사용하고 싶지 않습니다.

+0

예, 이미 잡았 습니다만, 오류가 htmlqp() 명령에 의해 생성되었다는 것을 100 % 확신하지는 않습니다. 오류가 스크립트의 어떤 행에서 발생했는지에 대해 자세히 설명하지 않기 때문입니다. htmlqp()가 아닌 경우 DOM 트리를 탐색하는 데 사용되는 수백 개의 명령 중 하나 일 수 있습니다. – James

+0

전체 스크립트에서 try catch를 사용하면 알아낼 수 있습니다. – Halcyon

+0

좋은 아이디어. 나는 그것을 시도하고 그것이 무엇을 던지는 지 볼 것이다. 불행히도 스크립트로 기다리는 게임은 몇 분 또는 며칠 동안 오류가 발생하기 전에 실행할 수 있습니다. – James

1

필자는 일부 프로덕션 코드에서 정반대의 문제를 해결하기 위해 노력하고있었습니다. 유형 힌팅이 전혀 작동하지 않습니다. 범인을 다음 코드로 추적했습니다 :

set_error_handler('errorHandler'); 

function errorHandler($errno, $errstr, $errfile, $errline) { 
    // Whole bunch of irrelevant code 
    // ... 

    return; 
} 

본질적으로 아무 것도하지 않으면 서 ... 오류를 처리합니다!