วีโอไอพีนั้นมีการป้องกันค่อนข้างดี (ตามที่ควรจะเป็น) เกี่ยวกับการแสดงข้อผิดพลาด เมื่อเปิดใช้งานโหมดผู้พัฒนา (ตามที่ควรจะเป็นในระหว่างการพัฒนา) แอปพลิเคชันจะอนุญาตให้เกิดข้อผิดพลาดรันไทม์เพื่อทำให้เกิดฟองขึ้นกับผู้ใช้ สำหรับข้อผิดพลาดในการรวบรวม XML แม้ว่าข้อเสนอแนะนี้จะค่อนข้างไร้ประโยชน์:
ข้อผิดพลาดร้ายแรง: ข้อยกเว้นที่ไม่ได้รับการยกเว้น 'ข้อยกเว้น' พร้อมข้อความ 'คำเตือน: simplexml_load_string (): รายการ: บรรทัดที่ 4: ข้อผิดพลาดในการแยกวิเคราะห์: การประกาศ XML อนุญาตเฉพาะการเริ่มต้นเอกสารใน [... ] / lib / Varien / Simplexml / Config php ในบรรทัด 510 'ในแอป [... ] / รหัส / core / Mage / Core / Functions.php ที่บรรทัด 245
นี่เป็นผลมาจากVarien_Simplexml_Config::loadFile()
การนำเสนอ::loadString()
ด้วยสตริงที่ไม่สามารถแยกวิเคราะห์ได้:
public function loadFile($filePath)
{
if (!is_readable($filePath)) {
//throw new Exception('Can not read xml file '.$filePath);
return false;
}
$fileData = file_get_contents($filePath);
$fileData = $this->processFileData($fileData);
return $this->loadString($fileData, $this->_elementClass);
}
มีวิธีแก้ปัญหาที่อาจเกิดขึ้นมากมายรวมถึงการใช้libxml_use_internal_errors
แต่วิธีการโทรไม่ได้สื่อสาร$filePath
พารามิเตอร์ดังนั้นบริบทจะหายไป ความเป็นไปได้อย่างหนึ่งคือการโยนข้อยกเว้นที่ชัดเจนมากขึ้น:
public function loadFile($filePath)
{
if (!is_readable($filePath)) {
//throw new Exception('Can not read xml file '.$filePath);
return false;
}
$fileData = file_get_contents($filePath);
$fileData = $this->processFileData($fileData);
try{
return $this->loadString($fileData, $this->_elementClass);
}
catch (Exception $e){
Mage::throwException (
sprintf(
"%s: error parsing %s:\r\n%s",
__METHOD__,
$filePath,
$e->getMessage()
)
);
}
}
อย่างน้อยนี้ให้ผลลัพธ์ดังนี้:
ข้อผิดพลาดร้ายแรง: ข้อยกเว้นที่ไม่ได้รับการแปล 'Mage_Core_Exception' พร้อมข้อความ ' Varien_Simplexml_Config :: loadFile: ข้อผิดพลาดในการแยกวิเคราะห์ [... ] / app / รหัส / local / บางคน / ตัวอย่าง / etc / config.xml : คำเตือน: simplexml_load_string (): Entity: line 4 : ข้อผิดพลาดในการแยกวิเคราะห์: การประกาศ XML อนุญาตเฉพาะที่จุดเริ่มต้นของเอกสารใน [... ] / lib / Varien / Simplexml / Config.php ที่บรรทัด 534 'ใน [... ] / app / Mage.php ที่บรรทัด 594
มีข้อดี / ข้อเสีย / วิธีอื่นในการพิจารณาที่นี่หรือไม่?