以下のコードで例外をキャッチできません。誰でもこのことで私を助けることができますか?
try
{
$xml_emp_name = $xpath->evaluate("//EMPLOYEES[ID='" . $emp_id . "']/EMP-NAME/text()")->item(0)->nodeValue;
}
catch(Exception $e)
{
echo "Error: " . $e->getMessage();
}
以下のコードで例外をキャッチできません。誰でもこのことで私を助けることができますか?
try
{
$xml_emp_name = $xpath->evaluate("//EMPLOYEES[ID='" . $emp_id . "']/EMP-NAME/text()")->item(0)->nodeValue;
}
catch(Exception $e)
{
echo "Error: " . $e->getMessage();
}
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
。
->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
}