แนะนำ: ใช้ ASP เพื่อพัฒนาเว็บไซต์ โดยทั่วไปแล้วเว็บไซต์ขนาดใหญ่มีโอกาสน้อยกว่าที่จะใช้ ASP สำหรับสถาปัตยกรรม แต่ ASP ยังคงมีขอบเขตตลาดขนาดใหญ่ในเว็บไซต์ธุรกิจขนาดเล็กและขนาดกลาง ASP ได้รับการสนับสนุนจากผู้ดูแลไซต์ขนาดเล็กและขนาดกลางสำหรับวงจรการพัฒนาที่เรียบง่ายและการบำรุงรักษาง่าย อย่างไรก็ตามเท่าที่ฉันรู้
7.4.2 การจัดการข้อผิดพลาด VBScript
ใน VBScript ตัวแปลภาษาสคริปต์ไม่สามารถจัดการกับข้อผิดพลาดใด ๆ ที่พบและเรียกใช้คำสั่งถัดไปโดยใช้คำสั่ง ON ERROR RESUME ต่อไป เมื่อมีการประมวลผลคำสั่งนี้แล้วเอ็นจิ้นสคริปต์จะดำเนินการต่อไปเพื่อเรียกใช้โปรแกรมที่ตามมาโดยไม่ต้องจ่ายข้อผิดพลาดใด ๆ ที่พบ อย่างไรก็ตามกระบวนการนี้ใช้กับสภาพแวดล้อมที่มีการดำเนินการตามลำดับและกล่าวอีกนัยหนึ่งไม่ใช่ฟังก์ชั่นซ้อนหรือรูทีนย่อย
1. ใช้คำสั่ง ON ERROR RESUME NEXT
เมื่อเกิดข้อผิดพลาดในรูทีนย่อยหากคำสั่งต่อไปของข้อผิดพลาดต่อไปไม่ได้รันข้อผิดพลาดจะถูกส่งไปยังสภาพแวดล้อมที่เรียกว่า กระบวนการนี้จะทำซ้ำจนกว่าสภาพแวดล้อมจะทำงานบนคำสั่ง ON ON Resume คำสั่งถัดไปหรือพบตัวจัดการข้อผิดพลาดสคริปต์เริ่มต้นและพบข้อผิดพลาดไปยัง ASP และ IIS แสดงหน้าข้อผิดพลาดเริ่มต้น
ห่วงโซ่การโทรที่ไม่ถูกต้องนี้หมายความว่าสามารถสร้างฟังก์ชั่นและรูทีนย่อยเพื่อป้องกันข้อผิดพลาดที่ทำให้โปรแกรมหยุดทำงาน หากคำสั่งต่อไปของข้อผิดพลาดอยู่ที่จุดเริ่มต้นของรูทีนย่อยข้อผิดพลาดเวลารันไทม์ใด ๆ จะยกเลิกการรันของรูทีนย่อย แต่โปรแกรมที่เรียกรูทีนย่อยจะดำเนินการต่อโดยไม่ทำให้หน้าเว็บหยุด
ตัวอย่างเช่นหากคุณต้องการเขียนสตริงลงในไฟล์คุณสามารถเข้าถึงไฟล์ผ่านฟังก์ชั่นอิสระเพื่อป้องกันข้อผิดพลาดจากการขัดจังหวะการทำงานของโปรแกรมทั้งหมด:
'สร้างไฟล์ชื่อ strfilename เขียนทับไฟล์ใด ๆ ที่มีอยู่ด้วยชื่อนั้น
'และเขียน strcontent ลงไปแล้วปิดไฟล์
'ส่งคืนจริงถ้ามันสำเร็จหรือเท็จในข้อผิดพลาดใด ๆ
Function WritenewFile (strfilename, strcontent)
บนข้อผิดพลาดกลับมาใหม่ 'ปิดตัวจัดการข้อผิดพลาดเริ่มต้น
witEnewFile = ค่าคืนค่าเริ่มต้นของฟังก์ชัน
ตั้งค่า objfso = createObject (scripting.filesystemobject)
ถ้า err.number = 0 จากนั้นตั้ง objfile = objfso.createtextfile (strfilename, true)
ถ้า err.number = 0 จากนั้น objfile.writeline strcontent
ถ้า err.number = 0 แล้ว objfile.close
ถ้า err.number = 0 แล้ว writenewFile = true
ฟังก์ชันสิ้นสุด
โปรดทราบว่าโปรแกรมข้างต้นตรวจสอบคุณสมบัติหมายเลขของวัตถุ ERR ของ VBScript ก่อนที่จะพยายามประมวลผลคำสั่งโปรแกรมแต่ละรายการ หากค่านี้เป็น 0 (ยังไม่มีข้อผิดพลาดเกิดขึ้น) กระบวนการยื่นและการสร้างไฟล์สามารถดำเนินการต่อได้ อย่างไรก็ตามหากข้อผิดพลาดเกิดขึ้นเอ็นจิ้นสคริปต์จะตั้งค่าของคุณสมบัติของวัตถุ ERR และดำเนินการต่อเพื่อประมวลผลบรรทัดถัดไป
ตราบใดที่มันสามารถทำงานได้ตามปกติโดยไม่ทำให้เกิดข้อผิดพลาดค่าส่งคืนของฟังก์ชันจะถูกตั้งค่าเป็นจริง มิฉะนั้นฟังก์ชั่นจะส่งคืนเท็จ ในการเขียนโปรแกรมคุณสามารถใช้ฟังก์ชั่นนี้และดำเนินการอื่น ๆ หลังจากทดสอบ
นี่คือตัวอย่างง่ายๆเราต้องการใช้ฟังก์ชั่นแยกต่างหากสำหรับส่วนแรกของงานเพื่อให้เราสามารถระบุได้อย่างแม่นยำมากขึ้นว่าเกิดข้อผิดพลาดมากขึ้น สิ่งนี้ทำให้อ่านรหัสได้ง่ายขึ้นระหว่างการดีบัก ในโปรแกรมหลักของหน้าสามารถเรียกใช้ฟังก์ชั่นแยกต่างหากสามฟังก์ชั่น
ถ้า createNewFile (strfilename) จากนั้น 'สร้างไฟล์ใหม่
Response.write สร้างไฟล์ใหม่สำเร็จ <br>
ถ้า writecontent (strcontent) จากนั้น 'เขียนเนื้อหา
Response.write เนื้อหาที่เขียนลงในไฟล์ <br>
อื่น
Response.write ข้อผิดพลาด: ไม่สามารถเขียนลงในไฟล์ <br>
สิ้นสุดถ้า
ถ้าปิดไฟล์ (strfilename) แล้ว
response.write ปิดไฟล์ <br>
อื่น
Response.write ข้อผิดพลาด: ไม่สามารถปิดไฟล์ <br>
สิ้นสุดถ้า
อื่น
Response.write ข้อผิดพลาด: ไม่สามารถสร้างไฟล์ใหม่ <br>
สิ้นสุด Funciotn
2. การใช้ข้อผิดพลาด GOTO 0
ใน ASP 2.0 (แม้ว่าจะไม่มีเอกสาร) และ ASP 3.0 พฤติกรรมการจัดการข้อผิดพลาดเริ่มต้นสามารถกู้คืนได้โดยใช้คำสั่ง ON ERROR GOTO 0 หลังจากเรียกใช้คำสั่งนี้ข้อผิดพลาดรันไทม์ที่เกิดขึ้นจะทำให้เกิดการจัดการข้อผิดพลาดเริ่มต้นตรวจสอบแต่ละโปรแกรมซ้อนกันในห่วงโซ่สภาพแวดล้อมจนถึงรหัสหน้าหลัก หากไม่มีสภาพแวดล้อมอื่น ๆ ที่จะปิดการจัดการข้อผิดพลาดเริ่มต้นการดำเนินการของหน้าเว็บจะหยุดและแสดงหน้าข้อผิดพลาดเริ่มต้นของ IIS
3. VBScript Err Object
ในตัวอย่างก่อนหน้าเมื่อปิดการจัดการข้อผิดพลาดเริ่มต้นให้ตรวจสอบว่าเกิดข้อผิดพลาดหรือไม่โดยการตรวจสอบคุณสมบัติหมายเลขของวัตถุ ERR VBScript วัตถุ ERR จะเก็บข้อมูลเกี่ยวกับข้อผิดพลาดรันไทม์ ตาราง 7-3 และ 7-4 ให้วิธีการและคุณสมบัติที่จัดทำโดยวัตถุ ERR VBScript
ตารางที่ 7-3 วิธีการของ VBScript Err Object
วิธี
อธิบาย
ชัดเจน
ล้างการตั้งค่าวัตถุ ERR ปัจจุบันทั้งหมด
ยก
เกิดข้อผิดพลาดรันไทม์
ตารางที่ 7-4 คุณสมบัติของ VBScript Err Object
คุณสมบัติ
อธิบาย
คำอธิบาย
ตั้งค่าหรือส่งคืนสตริงที่อธิบายข้อผิดพลาด
ตัวเลข
(เริ่มต้น) ตั้งค่าหรือส่งคืนค่าข้อผิดพลาดที่ระบุ
แหล่งที่มา
ตั้งค่าหรือส่งคืนชื่อของวัตถุที่สร้างข้อผิดพลาด
ใช้คุณสมบัติเหล่านี้เพื่อตรวจสอบข้อผิดพลาดที่เกิดขึ้น ตัวอย่างเช่นมาตรการที่แตกต่างกันสามารถใช้ตามหมายเลขข้อผิดพลาดหรือข้อมูลข้อผิดพลาดสามารถให้กับผู้ใช้ที่มีค่าคุณสมบัติของแหล่งที่มาและคำอธิบายหรือถ่ายโอนไปยังไฟล์
คุณยังสามารถใช้วัตถุ ERR เพื่อสร้างข้อผิดพลาด ทำไมสิ่งเหล่านี้? เพราะบางครั้งฉันต้องการส่งข้อความแสดงข้อผิดพลาดที่กำหนดเองไปยังผู้ใช้ คุณสมบัติของวัตถุ ERR สามารถตั้งค่าเป็นค่าที่ต้องการ จากนั้นเรียกใช้วิธีการเพิ่มเพื่อสร้างข้อผิดพลาดนี้ การทำเช่นนี้จะหยุดโปรแกรมและส่งข้อผิดพลาดกลับไปตามห่วงโซ่การโทร
ตัวอย่างต่อไปนี้แสดงวิธีจัดการกับข้อผิดพลาดเมื่ออ่านไฟล์ข้อความบนดิสก์เซิร์ฟเวอร์ หมายเหตุวิธีการใช้ VBOBJECTERROR คงที่เพื่อพิจารณาว่าหมายเลขข้อผิดพลาดที่เลือกจะไม่สับสนกับหมายเลขข้อผิดพลาดที่มีอยู่ โดยการเพิ่มหมายเลขข้อผิดพลาดใด ๆ ที่เลือกไว้ในค่าคงที่นี้จะรับประกันว่าจะไม่สับสนกับข้อผิดพลาดที่กำหนดไว้ล่วงหน้า
functoin readthisfile (strfilename) 'ส่งคืนเนื้อหาเป็นสตริง
เมื่อเกิดข้อผิดพลาดต่อไป
readthisfile = 'ค่าคืนค่าเริ่มต้นของฟังก์ชัน
ตั้งค่า objfso = createObject (scripting.filesystemobject)
ตั้งค่า objfile = objfso.opentextfile (strfilename, forreceding)
เลือก case err.number
กรณี 0 'ตกลงไม่ดำเนินการ
กรณี 50, 53 'ไฟล์มาตรฐานหรือเส้นทางไม่พบข้อผิดพลาด
'สร้างค่าข้อผิดพลาดที่กำหนดเองและเพิ่มข้อผิดพลาดสำรองห่วงโซ่การโทร
Internumber = vbobjecterror 1073 'หมายเลขข้อผิดพลาดที่กำหนดเอง
strerrdescript
แบ่งปัน: วิธีใช้ ASP เพื่อรับที่อยู่ของ IP จริงของลูกค้า? ในการรับที่อยู่ IP จริงของไคลเอนต์ผ่านพร็อกซีเซิร์ฟเวอร์คุณต้องใช้ request.ServerVariables (http_x_forwarded_for) เพื่ออ่าน แต่ควรสังเกตว่าไม่ใช่ทุกพร็อกซีเซิร์ฟเวอร์ที่สามารถใช้คำขอได้ ServerVariab