ปัญหาการ 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 ตามรูป |
![]() |
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 ความคิดเห็น:
แสดงความคิดเห็น