วันอังคารที่ 24 กุมภาพันธ์ พ.ศ. 2558
[PHP] วิธีจับ Notice มาเป็น Exception ใน TryCatch
ในภาษาพีเฮชพี Notice กับ Warning ไม่ถือเป็น runtime error ครับ ทำให้เวลาเราครอบด้วย try catch มันก็จะไม่เด้งไปที่ส่วนของ Exception ex เเต่จะขึ้นข้อความขึ้นมาเเจ้งเตือนแทน ซึ่งส่วนใหญ่ก็คุ้นกับการตั้งค่า error_report() ให้ซ่อนข้อความเหล่านั้นไป
เเต่ถ้าอยากตั้งกฎขึ้นมาใหม่ว่า Notice ก็ถือเป็น Exception ตัวหนึ่ง(เช่น Undefined index เป็นต้น) ก็ต้องจัดการด้วยฟังชั่น set_error_handler() เองครับ
ซึ่งบทความนี้ ผมจะแนะนำการจัดการ error ด้วยฟังชั่นเราเอง เช่นผมจะนับว่าการไม่เจออินเด็กใน array ถึงว่าผิดพลาด ก็ให้สร้างฟังชั่นนี้ขึ้นมาครับ
function errorHandlerCatchUndefinedIndex($errno, $errstr, $errfile, $errline ) {
// In case Undefined index
if (substr($errstr, 0, 16) == 'Undefined index:') {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
return false;
}
เเล้วเรียกฟังชั่นด้วยคำสั่งนี้ ก่อนเข้า try
// Set Notice return Error
set_error_handler("errorHandlerCatchUndefinedIndex");
หลับจบ catch หรือ finally ใส่คำสั่งนี้เพื่อกลับคืนสู่การตั้งค่า error ปกติของระบบ
// Restore Error
restore_error_handler();
หน้าตาโค๊ดจะออกมาประมาณนี้
set_error_handler("errorHandlerCatchUndefinedIndex");
try{
//do something!!
}catch(Exception $e){
restore_error_handler();
}
restore_error_handler();
อ้างอิง http://stackoverflow.com/questions/3261051/how-to-catch-an-undefined-index-e-notice-error-in-simpletest
สมัครสมาชิก:
ส่งความคิดเห็น (Atom)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น