เมื่อใดก็ตามที่ผู้ใช้รายงานข้อผิดพลาดเช่น
System.Runtime.InteropServices.SEHException - องค์ประกอบภายนอกมีข้อยกเว้นหรือไม่
มีอะไรที่ฉันในฐานะโปรแกรมเมอร์สามารถทำได้เพื่อหาสาเหตุ?
สถานการณ์จำลอง: ผู้ใช้รายหนึ่ง (ใช้โปรแกรมที่ บริษัท ของฉันเขียน) ได้รายงานข้อผิดพลาดนี้ นี่อาจเป็นข้อผิดพลาดหรือไม่ก็ได้ พวกเขากล่าวว่าในเดือนที่แล้วคอมพิวเตอร์ 'หยุดทำงาน' สองครั้ง ฉันได้เรียนรู้จากประสบการณ์แล้วไม่ควรใช้คำอธิบายนี้มากเกินไปเพราะโดยปกติแล้วจะหมายความว่ามีคนที่เกี่ยวข้องกับคอมพิวเตอร์ไม่ทำงานตามที่คาดไว้ พวกเขาไม่สามารถให้รายละเอียดเพิ่มเติมกับฉันได้และฉันไม่พบข้อผิดพลาดใด ๆ ที่บันทึกไว้ ดังนั้นจึงอาจเป็นข้อผิดพลาดนี้หรือไม่ก็ได้
จาก stack-trace ข้อผิดพลาดที่เกิดขึ้นจริงคือเมื่อสร้างคลาสซึ่งไม่ได้เรียกรหัสการทำงานร่วมกันโดยตรง แต่อาจมีความซับซ้อนเนื่องจากวัตถุอาจเป็นส่วนหนึ่งของรายการที่เป็นฐานข้อมูลไปยัง DevExpress Grid
ข้อผิดพลาดถูก 'จับ' โดยรูทีนข้อยกเว้นที่ไม่สามารถจัดการได้ซึ่งโดยปกติจะปิดโปรแกรม แต่มีตัวเลือกในการละเว้นและดำเนินการต่อ หากพวกเขาเลือกที่จะเพิกเฉยต่อข้อผิดพลาดโปรแกรมจะทำงานต่อไป แต่เกิดข้อผิดพลาดขึ้นอีกครั้งเมื่อรูทีนนี้ถูกเรียกใช้ครั้งต่อไป อย่างไรก็ตามมันไม่เกิดขึ้นอีกหลังจากปิดและรีสตาร์ทแอปพลิเคชันของเรา
คอมพิวเตอร์ที่เป็นปัญหาดูเหมือนจะไม่ได้รับการเน้นย้ำ ใช้งาน Vista Business มีหน่วยความจำ 2GB และตามที่ Task Manager ใช้เพียงครึ่งเดียวกับแอปพลิเคชันของเราเพียงประมาณ 200Mb
มีข้อมูลอีกชิ้นหนึ่งที่อาจเกี่ยวข้องหรือไม่เกี่ยวข้อง ส่วนอื่นของโปรแกรมเดียวกันใช้องค์ประกอบของบุคคลที่สามซึ่งเป็น dotnet wrapper ที่มีประสิทธิภาพรอบ ๆ dll ดั้งเดิมและส่วนประกอบนี้มีปัญหาที่ทราบซึ่งในบางครั้งคุณจะได้รับ
พยายามอ่านหรือเขียนหน่วยความจำที่มีการป้องกัน ซึ่งมักจะเป็นข้อบ่งชี้ว่าหน่วยความจำอื่นเสียหาย
ผู้ผลิตส่วนประกอบกล่าวว่าสิ่งนี้ได้รับการแก้ไขแล้วในเวอร์ชันล่าสุดของส่วนประกอบที่เราใช้อยู่ภายใน แต่ยังไม่ได้มอบให้กับลูกค้า
เนื่องจากผลที่ตามมาของข้อผิดพลาดอยู่ในระดับต่ำ (ไม่มีงานใดสูญหายและเริ่มต้นโปรแกรมใหม่และกลับไปยังจุดที่ใช้เวลาไม่เกินนาที) และเนื่องจากลูกค้าจะได้รับเวอร์ชันใหม่ในไม่ช้า (พร้อมอัปเดตครั้งที่สาม องค์ประกอบของปาร์ตี้) เห็นได้ชัดว่าฉันสามารถข้ามนิ้วได้และหวังว่าข้อผิดพลาดจะไม่เกิดขึ้นอีก
แต่มีอะไรเพิ่มเติมที่ฉันสามารถทำได้?