0

以下のコードで例外をキャッチできません。誰でもこのことで私を助けることができますか?

try
{
    $xml_emp_name = $xpath->evaluate("//EMPLOYEES[ID='" . $emp_id . "']/EMP-NAME/text()")->item(0)->nodeValue;
}
catch(Exception $e)
{
    echo "Error: " . $e->getMessage();
}
4

3 に答える 3

2

DOMXPath::evaulate は例外をスローしません。domxpath 評価

式の形式が正しくないか、contextnode が無効な場合、DOMXPath::evaluate() は FALSE を返します。

試す

$xml_emp_name = $xpath->evaluate("//EMPLOYEES[ID='" . $emp_id . "']/EMP-NAME/text()");
if(!$xml_emp_name){
    echo 'Error';
}else{
    $name = $xml_emp_name->item(0)->nodeValue;
}

evaulate が失敗して を返す場合、非オブジェクトのプロパティにアクセスしようとしますfalse

于 2013-06-20T09:12:57.457 に答える
0

->evaluate何らかの理由で例外をスローしないため、結果が false かどうかを確認してから例外をスローすることをお勧めします。

if (($xml_emp_name = $xpath->evaluate("//EMPLOYEES[ID='" . $emp_id . "']/EMP-NAME/text()") ) !== false) {
   $xml_emp_name = $xml_emp_name->item(0)->nodeValue;
}
else {
   // Throw Exception
}
于 2013-06-20T09:20:33.737 に答える