แนะนำ: ASP Tutorial: การเรียนรู้โปรแกรมการเขียนสคริปต์ ASP เป็นครั้งแรก ทำไมต้องเรียนรู้ภาษาสคริปต์? ความสัมพันธ์ระหว่าง ASP และภาษาสคริปต์คืออะไร? ก่อนอื่นมาพูดถึงสิ่งที่ ASP มีค่า ASP เป็นตัวย่อของ Microsoft Active Server Pages สภาพแวดล้อมการเขียนสคริปต์ฝั่งเซิร์ฟเวอร์ที่สามารถใช้ในการสร้างหน้าเว็บแบบโต้ตอบและสร้างทรงพลัง
การจัดการข้อผิดพลาดของ ASP
ASP นั้นง่ายมากที่นักพัฒนาหลายคนไม่คิดเกี่ยวกับการจัดการข้อผิดพลาด การจัดการข้อผิดพลาดสามารถทำให้แอปพลิเคชันของคุณมีเหตุผลมากขึ้น ฉันเคยเห็นเว็บไซต์เชิงพาณิชย์จำนวนมากที่เขียนใน ASP ซึ่งส่วนใหญ่ไม่สนใจการจัดการข้อผิดพลาด
ประเภทผิด
มีข้อผิดพลาดหลักสามประเภท:
ข้อผิดพลาดในการรวบรวม:
ข้อผิดพลาดประเภทนี้เกิดขึ้นโดยทั่วไปเนื่องจากปัญหาไวยากรณ์ของรหัส คำกริยา ASP หยุดทำงานเนื่องจากข้อผิดพลาดในการรวบรวม
เรียกใช้ข้อผิดพลาด
ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพร้อมที่จะเรียกใช้ ASP ตัวอย่างเช่น: หากคุณพยายามกำหนดค่าให้กับตัวแปร แต่มันเกินขอบเขตที่ตัวแปรอนุญาต
ข้อผิดพลาดเชิงตรรกะ
ข้อผิดพลาดเชิงตรรกะนั้นยากที่สุดในการตรวจจับ ข้อผิดพลาดประเภทนี้มักจะเป็นข้อผิดพลาดเชิงโครงสร้างที่คอมพิวเตอร์ไม่สามารถค้นพบได้ สิ่งนี้ต้องการให้เราตรวจสอบรหัสของเราอย่างละเอียด
เนื่องจากข้อผิดพลาดในการรวบรวมมักเกิดขึ้นพร้อมกับข้อผิดพลาดเชิงตรรกะและสามารถแสดงได้โดยทั่วไปสิ่งที่เรากังวลคือข้อผิดพลาดในการดำเนินการ ทุกอย่างยุติการทำงานของ ASP และทิ้งข้อความที่ไม่เป็นมิตรสำหรับผู้ใช้
ดังนั้นเราจะจัดการกับข้อผิดพลาดในการดำเนินการได้อย่างไร! - ลองมาดูกันก่อน คำสั่งข้อผิดพลาดเพียงอย่างเดียวที่เรามอบให้โดย ASP --- ในการดำเนินการต่อไปต่อไป (ฉันต้องการเตือนผู้เริ่มต้นว่ามีเฉพาะในการดำเนินการต่อข้อผิดพลาดข้อความถัดไปใน ASP แต่ไม่มีคำสั่งดำเนินการต่อข้อผิดพลาด
หากคุณไม่ได้ใช้คำแถลงข้อผิดพลาดในคำแถลงถัดไปข้อผิดพลาดที่รันทั้งหมดจะเกิดขึ้นซึ่งเป็นอันตรายถึงชีวิตรหัสข้อผิดพลาดจะปรากฏต่อผู้ใช้และโปรแกรม ASP ก็จะหยุดลง
นี่คือรหัสข้อผิดพลาด:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: Microsoft OLE DB Provider สำหรับข้อผิดพลาดของไดรเวอร์ ODBC 80004005 [Microsoft] [ODBC Driver Manager] ไม่พบชื่อแหล่งข้อมูลและไม่ระบุไดรเวอร์เริ่มต้น /test.asp, บรรทัด 60 |
เมื่อเราใช้คำสั่ง ON ERROR RESUME NEXT ที่ด้านบนของโปรแกรมข้อผิดพลาดทั้งหมดจะถูกละเว้นและโปรแกรมจะเรียกใช้คำสั่งถัดไปโดยอัตโนมัติ ด้วยวิธีนี้โปรแกรมจะถูกดำเนินการอย่างสมบูรณ์และผู้ใช้จะไม่เห็นข้อความแสดงข้อผิดพลาดหลังจากเกิดข้อผิดพลาด แต่ก็มีข้อเสียในวิธีนี้นั่นคือถ้าโปรแกรมไม่ดำเนินการตามที่คุณจินตนาการมันจะเป็นเรื่องยากสำหรับคุณที่จะค้นหาว่ามีอะไรผิดปกติดังนั้นคุณต้องจัดการกับข้อผิดพลาดที่จำเป็น
การจัดการข้อผิดพลาด
ใน ASP วิธีที่ดีที่สุดในการจัดการกับข้อผิดพลาดคือการวางรหัสที่ด้านล่างของโปรแกรมเพื่อจัดการกับข้อผิดพลาด ฉันยังแนะนำให้ใช้บัฟเฟอร์ในโปรแกรม ASP ทุกโปรแกรม ด้วยวิธีนี้หากเกิดข้อผิดพลาดหน้าจะหยุดและเนื้อหาหน้าจะถูกล้างเพื่อให้ผู้ใช้จะไม่เห็นข้อความแสดงข้อผิดพลาดและจะมีการร้องเรียนน้อยลงเกี่ยวกับคุณ! นี่คือตัวอย่าง:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: - 'ตั้งบัฟเฟอร์เป็นจริง response.buffer = true 'เริ่มการจัดการข้อผิดพลาด เมื่อเกิดข้อผิดพลาดต่อไป - - 'การจัดการข้อผิดพลาด ถ้า err.number <> 0 แล้ว 'ล้างหน้า Response.Clear 'แสดงข้อความแสดงข้อผิดพลาดถึงผู้ใช้ - <html> <head> <title> </title> </head> <body bgcolor =#c0c0c0> <font face = Arial> เกิดข้อผิดพลาดในการดำเนินการของหน้า ASP นี้ <br> โปรดรายงานข้อมูลต่อไปนี้ไปยังแผนกสนับสนุน <p> <b> วัตถุข้อผิดพลาดหน้า </b> <br> หมายเลขข้อผิดพลาด: < %= err.number %> <br> ข้อความแสดงข้อผิดพลาด: < %= err.description %> <br> ไฟล์ข้อผิดพลาด: < %= err.source %> <br> บรรทัดข้อผิดพลาด: < %= err.line %> <br> </font> </body> </html> <%end ถ้า%> |
อย่างที่คุณเห็นด้านบนฉันตั้งค่าข้อผิดพลาดครั้งแรกต่อไปเพื่อให้ข้อผิดพลาดจะไม่ส่งผลกระทบต่อการดำเนินการของโปรแกรม
การจัดการข้อผิดพลาดและฐานข้อมูล
การดำเนินการของการเพิ่มฐานข้อมูลในการจัดการข้อผิดพลาดนั้นซับซ้อนมาก หากเรามีโปรแกรมที่มีคำสั่งมากมายเพื่อเพิ่มระเบียนลงในฐานข้อมูลหากมีการดำเนินการ/อัปเดตที่ด้านล่างของโปรแกรมหากข้อผิดพลาดของเราเกิดขึ้นอีกครั้งก่อนหน้านั้นจะจบลง! เราจะเพิ่มข้อความแสดงข้อผิดพลาดไปยังฐานข้อมูล เนื่องจากเราใช้ข้อผิดพลาดต่อไปข้อผิดพลาดทั้งหมดถูกละเว้น! แม้ว่าจะมีข้อผิดพลาดมาก่อนโปรแกรมจะยังคงเพิ่มข้อมูลลงในฐานข้อมูล
เพื่อหลีกเลี่ยงสถานการณ์นี้เราต้องทำเคล็ดลับก่อน วิธีที่ถูกต้องในการจัดการกับมันมีดังนี้:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: ถ้า err.number = 0 และ objconnection.errors.count = 0 แล้ว 'คำสั่งสามารถดำเนินการได้ที่นี่เท่านั้นเนื่องจากไม่มีข้อผิดพลาด ตั้งค่า rstresults = dbdata.execute (txtsql) สิ้นสุดถ้า |
โซลูชั่นขั้นสูงเพิ่มเติม
เมื่อเกิดข้อผิดพลาดคุณสามารถแสดงข้อความแสดงข้อผิดพลาดเพิ่มเติมได้ ต่อไปนี้เป็นตัวอย่างของการจัดการทั้งฐานข้อมูลและข้อผิดพลาดของหน้า ด้วยมันเราสามารถค้นพบข้อผิดพลาดทั้งหมดในโปรแกรมของเราในครั้งเดียว
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: - ถ้า err.number <> 0 แล้ว Response.Clear เลือก case err.number กรณีที่ 8 'ระบุหมายเลขผิด 'แก้ไขข้อผิดพลาดที่กำหนดเองที่นี่ กรณีอื่น 'ข้อผิดพลาดทั่วไป ถ้า isObject (objconnection) จากนั้น ถ้า objconnection.errors.count> 0 แล้ว - <b> วัตถุการเชื่อมต่อฐานข้อมูล </b> - สำหรับ intloop = 0 ถึง objconnection.errors.count - 1 %> ข้อผิดพลาดไม่: < %= objconnection.errors (intloop) .number %> <br> คำอธิบาย: < %= objconnection.errors (intloop) .description %> <br> ที่มา: < %= objconnection.errors (intloop) .Source %> <br> sqlstate: < %= objconnection.errors (intloop) .sqlstate %> <br> NativeError: < %= objconnection.errors (intloop) .nativeerror %> <p> <% ถัดไป สิ้นสุดถ้า สิ้นสุดถ้า ถ้า err.number <> 0 แล้ว - <b> วัตถุข้อผิดพลาดหน้า </b> <br> หมายเลขข้อผิดพลาด < %= err.number %> <br> คำอธิบายข้อผิดพลาด < %= err.description %> <br> แหล่งที่มา < %= err.source %> <br> ผ้าลินิน < %= err.line %> <p> - สิ้นสุดถ้า สิ้นสุดเลือก สิ้นสุดถ้า - |
ตัวอย่างข้างต้นช่วยให้เราสามารถจัดการกับปัญหามากมายที่เกิดขึ้นในฐานข้อมูลซึ่งมักใช้ในการเขียนโปรแกรมประจำวันของเรา! เราควรเห็นว่าคำสั่ง SELECT CASE ซึ่งช่วยให้เราสามารถจัดการกับข้อผิดพลาดเฉพาะ
เปลี่ยนเส้นทางและการจัดการข้อผิดพลาด
สิ่งหนึ่งที่เราควรให้ความสนใจคือวัตถุเปลี่ยนเส้นทางที่เรามักใช้ หากวัตถุเปลี่ยนเส้นทางปรากฏในหน้าเว็บการจัดการข้อผิดพลาดจะสูญเสียความหมาย ดังนั้นเราต้องจัดการกับมันก่อนที่จะเปลี่ยนดังนี้:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: ถ้า err.number = 0 และ objconnection.errors.count = 0 แล้ว Response.Clear Response.redirect url ที่นี่ สิ้นสุดถ้า |
ทำให้รหัสเรียบร้อยมากขึ้น
หากต้องการทำให้รหัสเรียบร้อยมากขึ้นให้วางไฟล์ที่มีข้อผิดพลาดในไฟล์ที่มีอยู่ก่อน วิธีนี้คุณสามารถใช้มันในไฟล์ใดก็ได้ นอกจากนี้ยังสะดวกในการปรับเปลี่ยน
เพิ่ม ON ERROR RESUME คำสั่งถัดไปที่ด้านบนของโปรแกรมของคุณ (หลังจากการประกาศภาษาแน่นอน)
ทำการตรวจสอบข้อผิดพลาดก่อนที่คุณจะเรียกใช้ SQL
จำเป็นต้องมีการจัดการข้อผิดพลาดก่อนที่จะใช้การเปลี่ยนเส้นทาง
ให้คุณจัดการกับข้อผิดพลาดที่มีไฟล์ที่ด้านบนของรหัส
แชร์: โปรแกรม ASP ตระหนักถึงฟังก์ชั่นการแบ่งหน้าของค่าพารามิเตอร์การบันทึก ต่อไปนี้เป็นเนื้อหาที่อ้างอิง: <%'' '' '' ตัวอย่างการโทร 'dim int_rpp, int_start, int_shownumberli