×

คำเตือน

JUser: :_load: Unable to load user with ID: 6465

ให้เรตสมาชิก: 2 / 5

ดาวใช้งานดาวใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

บทที่ 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

ชื่อ
javascript18
หมวดหมู่
Javascript, Javascript
ฮิต
18250
ผู้สร้างเอกสาร
วันที่สร้างเอกสาร
2016-06-03 13:42:05

javascript18.zip

ประเภทไฟล์ zip

ขนาดไฟล์ 1.04 KB

ผู้อัพโหลดไฟล์

วันที่อัพโหลด 2016-06-03 06:40:48


กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
การตั้งค่า ข้อมูลส่วนตัว
โดย จันนุสรณ์ ดีแก่ อ 18 ธ.ค. 2018 6:58 pm บอร์ด phpBB user Guide Knowledge
0
5
อ 18 ธ.ค. 2018 6:58 pm โดย จันนุสรณ์ ดีแก่
ไอคอนกระทู้ และการใช้งาน
โดย จันนุสรณ์ ดีแก่ อ 18 ธ.ค. 2018 5:17 pm บอร์ด phpBB user Guide Knowledge
0
6
อ 18 ธ.ค. 2018 5:17 pm โดย จันนุสรณ์ ดีแก่
วิธีการส่งค่าตัวแปร จาก html เข้าไปใช้ใน javascript
โดย Ittichai_chupol อ 18 ธ.ค. 2018 5:13 pm บอร์ด Programming - PHP
2
14
อ 18 ธ.ค. 2018 5:20 pm โดย Ittichai_chupol
ทำไงให้เข้าระบบได้ตลอดเวลาโดยไม่ต้องพิมพ์รหัสผ่าน
โดย จันนุสรณ์ ดีแก่ อ 18 ธ.ค. 2018 4:46 pm บอร์ด phpBB user Guide Knowledge
0
7
อ 18 ธ.ค. 2018 4:46 pm โดย จันนุสรณ์ ดีแก่
ภาษา C
โดย จันนุสรณ์ ดีแก่ อ 18 ธ.ค. 2018 1:29 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
9
อ 18 ธ.ค. 2018 1:29 pm โดย จันนุสรณ์ ดีแก่
ตัวอย่าง User Acceptance Test
โดย noonueng_999 อ 18 ธ.ค. 2018 11:10 am บอร์ด Share Knowledge
0
10
อ 18 ธ.ค. 2018 11:10 am โดย noonueng_999
Q - Camtasia ไม่สามารถนำไฟล์เข้ามาตัดต่อได้
โดย จันนุสรณ์ ดีแก่ อ 18 ธ.ค. 2018 10:22 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
8
57
อ 18 ธ.ค. 2018 4:55 pm โดย จันนุสรณ์ ดีแก่
Q - รัน localhost แล้วขึ้นแบบนี้ สามารถแก้ด้วยวิธีใดคะ
โดย จันนุสรณ์ ดีแก่ อ 18 ธ.ค. 2018 9:35 am บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
0
21
อ 18 ธ.ค. 2018 9:35 am โดย จันนุสรณ์ ดีแก่
กดส่งอีเมลในแบบฟอร์มการติดต่อแล้วขึ้น Error 404 Object not found ต้องแก้ไขยังไงครับ
โดย Tewlie Pinsakorn จ 17 ธ.ค. 2018 11:36 pm บอร์ด Joomla Development
2
26
อ 18 ธ.ค. 2018 12:46 pm โดย Tewlie Pinsakorn
วิธีการเพิ่ม BBcode ในเว็บ ปุ่มจัดกลาง
โดย จันนุสรณ์ ดีแก่ จ 17 ธ.ค. 2018 6:04 pm บอร์ด phpBB user Guide Knowledge
0
11
จ 17 ธ.ค. 2018 6:04 pm โดย จันนุสรณ์ ดีแก่
BBcode การจัดกึ่งกลาง
โดย จันนุสรณ์ ดีแก่ จ 17 ธ.ค. 2018 6:03 pm บอร์ด phpBB user Guide Knowledge
0
13
จ 17 ธ.ค. 2018 6:03 pm โดย จันนุสรณ์ ดีแก่
การค้นหาขั้นสูง
โดย จันนุสรณ์ ดีแก่ จ 17 ธ.ค. 2018 4:54 pm บอร์ด phpBB user Guide Knowledge
0
17
จ 17 ธ.ค. 2018 4:54 pm โดย จันนุสรณ์ ดีแก่
อยากได้แอคเซสเข้าสู่หัวใจเธอ
โดย จันนุสรณ์ ดีแก่ จ 17 ธ.ค. 2018 2:13 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
17
จ 17 ธ.ค. 2018 2:13 pm โดย จันนุสรณ์ ดีแก่
วิธีการใช้งาน Function preg_match()
โดย Ittichai_chupol จ 17 ธ.ค. 2018 11:29 am บอร์ด PHP Knowledge
0
12
จ 17 ธ.ค. 2018 11:29 am โดย Ittichai_chupol
Joomshopping ไม่สามารถใช้ฟังชั่นก์ส่งเมลได้
โดย Kritsana Leesakul อ 16 ธ.ค. 2018 8:37 pm บอร์ด Joomla Development
8
54
อ 18 ธ.ค. 2018 1:25 am โดย fernn25
วิธีแก้ปัญหาลืมรหัสผ่าน admin ของ Worlpress โดยการเปลี่ยนรหัสด้วย phpMyadmin
โดย mindphp อ 16 ธ.ค. 2018 6:44 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
0
11
อ 16 ธ.ค. 2018 6:44 pm โดย mindphp
วิธีการใช้งาน Function preg_match_all()
โดย Ittichai_chupol ส 15 ธ.ค. 2018 6:19 pm บอร์ด PHP Knowledge
0
17
ส 15 ธ.ค. 2018 6:19 pm โดย Ittichai_chupol
การสร้างกระดานข่าวในส่วนของผู้ดูแลระบบ
โดย จันนุสรณ์ ดีแก่ ศ 14 ธ.ค. 2018 4:38 pm บอร์ด phpBB user Guide Knowledge
0
28
ศ 14 ธ.ค. 2018 4:38 pm โดย จันนุสรณ์ ดีแก่
วิธีแก้เมื่อ Phpbb ขึ้นว่า กรุณาลบไดเรกเทอรี หากไดเรกเทอรียังอยู่ใช้ได้แต่ แผงควบคุมเท่านั้น
โดย จันนุสรณ์ ดีแก่ ศ 14 ธ.ค. 2018 3:39 pm บอร์ด phpBB user Guide Knowledge
0
30
ศ 14 ธ.ค. 2018 3:39 pm โดย จันนุสรณ์ ดีแก่
การค้นหาภายในกระทู้
โดย จันนุสรณ์ ดีแก่ ศ 14 ธ.ค. 2018 1:54 pm บอร์ด phpBB user Guide Knowledge
0
29
ศ 14 ธ.ค. 2018 1:54 pm โดย จันนุสรณ์ ดีแก่