ข้อยกเว้นของโอกาสครั้งแรกคืออะไร? โปรแกรม. NET มีที่มาอย่างไรและที่ไหน? แล้วทำไมถึงเรียกด้วยชื่อแปลก ๆ (เรากำลังพูดถึง 'โอกาส' อะไร)
ข้อยกเว้นของโอกาสครั้งแรกคืออะไร? โปรแกรม. NET มีที่มาอย่างไรและที่ไหน? แล้วทำไมถึงเรียกด้วยชื่อแปลก ๆ (เรากำลังพูดถึง 'โอกาส' อะไร)
คำตอบ:
เป็นแนวคิดในการแก้ไขข้อบกพร่อง โดยทั่วไปข้อยกเว้นจะถูกโยนไปที่ดีบักเกอร์ก่อนจากนั้นไปยังโปรแกรมจริงซึ่งหากไม่ได้รับการจัดการมันจะถูกโยนไปที่ดีบักเกอร์เป็นครั้งที่สองทำให้คุณมีโอกาสทำอะไรกับมันใน IDE ของคุณก่อนและหลังแอปพลิเคชันนั้นเอง สิ่งนี้ดูเหมือนจะเป็นสิ่งประดิษฐ์ของ Microsoft Visual Studio
catch
สำหรับสิ่งนี้การควบคุมจะไปที่นั่น ถ้าไม่มีcatch
บล็อกคุณจะได้รับ "สองโอกาส" หยุดเวลานี้ข้อความเป็นข้อยกเว้น unhandled ชนิด 'foo' ที่เกิดขึ้นใน YourApp.exe จากตรงนี้การพยายามทำต่อหรือก้าวต่อไปจะไม่ประสบความสำเร็จ
มีการแจ้งเตือนข้อยกเว้นครั้งแรกเมื่อเกิดข้อยกเว้น การแจ้งเตือนโอกาสที่สองคือเมื่อไม่ถูกจับ (โอกาส - เช่นเดียวกับโอกาสที่จะเจาะเข้าไปในโค้ดในดีบักเกอร์)
ฉันเพิ่งเริ่มใช้ดีบักเกอร์และพบกับสิ่งนี้ ในการวิจัยของฉันฉันพบโพสต์บล็อก MSDN ข้อยกเว้นโอกาสแรกคืออะไร? ที่เคลียร์ให้ฉัน
ประเด็นสำคัญจากบล็อกโพสต์สำหรับฉันคือมันหมายถึงการแจ้งเตือนไปยังดีบักเกอร์ไม่ใช่สิ่งที่รหัสของฉันจำเป็นต้องจัดการและที่สำคัญที่สุดคือ "ข้อความยกเว้นโอกาสแรกส่วนใหญ่มักไม่ได้หมายความว่ามีปัญหาใน รหัส."
เมื่อแอปพลิเคชันกำลังถูกดีบักดีบักเกอร์จะได้รับการแจ้งเตือนทุกครั้งที่พบข้อยกเว้น ณ จุดนี้แอปพลิเคชันจะถูกระงับและดีบักเกอร์จะตัดสินใจว่าจะจัดการกับข้อยกเว้นอย่างไร การส่งผ่านกลไกนี้ครั้งแรกเรียกว่าข้อยกเว้น "โอกาสแรก"
ขึ้นอยู่กับการกำหนดค่าของดีบักเกอร์แอปพลิเคชันจะดำเนินการต่อแอปพลิเคชันและส่งผ่านข้อยกเว้นหรือจะปล่อยให้แอปพลิเคชันถูกระงับและเข้าสู่โหมดดีบัก หากแอปพลิเคชันจัดการกับข้อยกเว้นแอปพลิเคชันยังคงทำงานตามปกติ
ข้อความยกเว้นโอกาสแรกส่วนใหญ่มักไม่ได้หมายความว่ามีปัญหาในรหัส สำหรับแอปพลิเคชัน / ส่วนประกอบที่จัดการข้อยกเว้นอย่างสง่างามข้อความข้อยกเว้นโอกาสแรกจะแจ้งให้นักพัฒนาทราบว่าพบสถานการณ์พิเศษและได้รับการจัดการแล้ว
จากมุมมองของนักพัฒนาก็มากขึ้นเกี่ยวกับข้อยกเว้นที่สองโอกาสเพราะมันจะหมายความว่ามันก็ไม่ได้รับการจัดการในรหัส ; ดังนั้นแอปพลิเคชันจะหยุดลง
โอกาสแรกอาจมีได้หลายคน แต่โอกาสที่น่ากังวลเกี่ยวกับอีกครั้งจากมุมมองของการพัฒนาเป็นโอกาสที่สองเพราะจะทำให้แอปพลิเคชันขัดข้อง
finally
บล็อกใด ๆจะทำงาน เมื่อระบบตัดสินใจว่าใครจะจับข้อยกเว้น (และตัดสินว่ามีคนไปจริง) ระบบจะเริ่มคลี่คลายสแต็ก โปรดทราบว่าหากมีข้อยกเว้นเกิดขึ้นจากfinally
บล็อก ...