บทที่ 18 JavaScript Errors

บทที่ 18 JavaScript Errors
    ปัญหาการ Error ของโค้ด Javascript อาจมีจุดบกพร่องที่เกิดจากการเขียนโค้ดไม่สมบูรณ์ หรือติดเงื่อนไขการนำโค้ดบางประเภทมาใช้งาน ส่งผลให้เมื่อท่านนำโค้ดเหล่านี้มาใช้จะเกิด Error บนหน้าเว็บไซต์ โดยมีหน้าต่าง Pop up เตือนว่า  JavaScript Error  ส่งผลให้เว็บไซต์ทำงานช้าลง การโหลดข้อมูลบนหน้าเว็บช้า เพราะติดปัญหาการโหลด Javascript

     คุณสมบัติหนึ่งที่ภาษาโปรแกรมเชิงวัตถุมีก็คือ   กระบวนการดักจับและจัดการต่อความผิดพลาดที่เกิดขึ้น จาวาสคริปต์เองก็มีคุณลักษณะนี้โดยใช้กลไกการ try-catch เช่นเดียวกับภาษาโปรแกรมเชิงวัตถุตัวอื่น

 1.try catch statement

   ในการเขียนโค้ดภาษาจาวาสคริปต์นั้น   หากเราต้องการที่จะดักจับความผิดพลาดใดๆ ที่เกิดขึ้นระหว่างการประมวลโค้ดที่อยู่นอกฟังก์ชัน หรือโค้ดที่อยู่ในฟังก์ชัน (ภายใต้เครื่องหมาย { } ) เราสามารถกระทำโดยการใช้คำสั่ง try{} ล้อมบริเวณดังกล่าวไว้ ทั้งนี้เนื่องจากเครื่องหมาย { } ถูกนำไปใช้ในการนิยามฟังก์ชันหรือกลุ่มคำสั่งด้วย ดังนั้นเราจะไม่สามรารถล้อมบริเวณที่คาบเกี่ยวระหว่างนอกฟังก์ชันกับใน ฟังก์ชัน หรือข้ามส่วนบริเวณที่ล้อมรอบเป็นกลุ่มคำสั่งได้ (ต้องล้อมบริเวณนอกฟังก์ชัน หรือภายในบริเวณต่างๆ ในฟังก์ชันโดยจะต้องล้อมกรอบคร่อมชุดกลุ่มคำสั่งทั้งชุดไว้
มี Syntax ดังนี้try
  {
  //Run some code here
  }
catch(err)
  {
  //Handle errors here
  }

   เมื่อเกิดความผิดพลาดขึ้นในระหว่างการทำงานตามคำสั่งในบริเวณ try{} ดังกล่าว โปรแกรมจะกระโดดมาทำงานภายใน catch(){} โดยข้อมูลบอกความผิดพลาดจะส่งมาเก็บไว้ที่ตัวแปรในวงเล็บหลังคำสงวน catch
ตัวอย่างเช่น
<html>
<head>
<script>
var txt="";
function message()
{
try
  {  adddlert("Welcome guest!");  }
catch(err)
  {
  txt="There was an error on this page.\n\n";
  txt+="Error description: " + err.message + "\n\n";
  txt+="Click OK to continue.\n\n";
  alert(txt);  }
}
</script>
</head>
<body>
<input type="button" value="View message" onclick="message()" />
</body>
</html>
ผลลัพธ์คือ
และเมื่อลองคลิกที่ปุ่ม view message จะได้ข้อความแจ้ง error ตามรูป
   ในบางกรณีที่เราสามารถคาดการณ์ได้ว่า อาจจะเกิดการทำงานที่ผิดพลาดในทางใดได้บ้าง   แทนที่เราจะเขียนโปรแกรมในเชิงดักจับเพียงอย่างเดียว เราอาจจะเขียนโค้ดให้มีการสร้างสัญญาณเหตุการณ์ความผิดพลาดขึ้นเองด้วยก็ได้ และโดยการสร้างเหตุการณ์บอกความผิดพลาดนี้ ทำให้เราสามารถแนบข้อความบอกประเภทความผิดพลาดเป็นการเฉพาะไปด้วยได้   โดยในส่วนการทำงานตอบสนองต่อความผิดพลาดใน catch(){} นั้น เราจึงสามารถนำข้อมูลรายงานความผิดพลาดมาตรวจสอบและตอบสนองเป็นการเฉพาะต่อ สัญญาณความผิดพลาดนั้นๆ ได้
     2.คำสั่ง throw เป็นคำสั่งให้สามารถสร้าง Exception ถ้าใช้ร่วมกับคำสั่ง try..catch จะทำให้สามารถควบคุมทิศทางการทำงานได้ และสามารถกำหนด error message ที่เหมาะสมกับ error ได้
                การสร้างสัญญาณบอกความผิดพลาด เรากระทำโดยใช้คำสงวน throw ดังตัวอย่าง
    <html>
    <body>
    <script type="text/javascript">
    var x=prompt("Enter a number between 0 and 10:","")
    try
    {
    if(x>10)
    throw "Err1"
    else if(x<0)
    throw "Err2"
    }
    catch(er)
    {
    if(er=="Err1")
    alert("Error! The value is too high")
    if(er=="Err2")
    alert("Error! The value is too low")
    }
    </script>
    </body>
    </html>
ผลลัพธ์คือ
 
และเมื่อลองใส่เลขที่ไม่ใช่ 0-10 จะมีข้อความแจ้ง error ตามรูปด้านล่าง

   จะเห็นได้ว่า ในกรณีนี้เราสร้างสัญญาณความผิดพลาดโดยกำกับข้อมูลเป็น "Err1" หรือ "Err2" ขึ้นอยู่กับสถานะที่เราต้องการ   และในส่วนของ catch(){}  จะเห็นว่าตัวแปร er ที่รับข้อมูลแสดงความผิดพลาด จะเก็บค่าที่เราโยน (throw) สัญญาณความผิดพลาดนี้ ซึ่งเราสามารถตรวจสอบค่าใน er เพื่อตอบสนองต่อความผิดพลาดเป็นการเฉพาะกรณีได้
    สำหรับเว็บบราวเซอร์เก่าๆ หน่อย จะไม่รองรับ try-catch นี้ แต่จะรองรับการดักจับความผิดพลาดโดยผ่านทางเหตุการณ์ onerror (เว็บบราวเซอร์เวอร์ชันที่นิยมใช้กันในปัจจุบันจะรองรับทั้งสองแบบ)

คลิกเพื่อดู demo file javascript
(ตัวอย่างที่ 1)
คลิกเพื่อดู demo file javascript (ตัวอย่างที่ 2)

ข้อมูลอ้างอิง
http://devzonedd.designweb2you.com

0 ความคิดเห็น:

แสดงความคิดเห็น