ความแตกต่างระหว่างข้อยกเว้นที่ตรวจสอบแล้วและไม่ได้ตรวจสอบ (พร้อมตาราง)

สารบัญ:

Anonim

การตรวจสอบข้อยกเว้นถือเป็นสิ่งสำคัญที่สุดในการทดสอบโปรแกรมและซอฟต์แวร์ Checked And Unchecked Exception หยุดโปรแกรมไม่ให้ทำงานเมื่อพยายามตรวจจับจุดบกพร่องหรือข้อผิดพลาด นอกจากนี้ ถือเป็นความรับผิดชอบของโปรแกรมเมอร์ที่จะต้องแน่ใจว่าข้อผิดพลาดเหล่านี้จะไม่เกิดขึ้น ทั้ง Checked และ Unchecked Exception มีความคล้ายคลึงกันเป็นพิเศษ แต่ก็แตกต่างกัน

ข้อยกเว้นที่ตรวจสอบแล้วและไม่ได้ตรวจสอบ

ความแตกต่างระหว่าง Checked และ Unchecked Exception คือ Checked exceptions คือสิ่งที่ต้องจับและจัดการโดยคำสั่ง checks () มิฉะนั้นจะทำให้โปรแกรมยุติการทำงานและพิมพ์ stack trace ในขณะที่ Unchecked exceptions ควร ไม่จำเป็นต้องถูกจับหรือจัดการเลย เนื่องจากเป็นความรับผิดชอบของโปรแกรมเมอร์ที่จะต้องแน่ใจว่าข้อผิดพลาดเหล่านี้จะไม่เกิดขึ้น

Checked exception เป็นข้อยกเว้นประเภทหนึ่งที่หยุดการทำงานของโปรแกรมจนกว่าจะถูกจับโดย catch block หรือระบุไว้ในคำสั่ง throws ของ method นอกจากนี้ Checked exception จะถูกตรวจจับและจัดการโดยคำสั่ง check () หรือพวกเขา จะทำให้โปรแกรมยุติการทำงานและพิมพ์การติดตามสแต็ก

หากโค้ดที่ทำให้เกิดข้อยกเว้นไม่ได้รับการทดสอบอย่างถูกต้อง อาจทำให้เกิดบั๊กพิเศษที่ยังไม่ได้ตรวจสอบที่ยังไม่ได้ตรวจสอบ ซึ่งยากต่อการค้นหาและแก้ไข นอกจากนี้ ไม่ควรตรวจพบหรือจัดการข้อยกเว้นที่ไม่ได้ตรวจสอบเลย เนื่องจากเป็นความรับผิดชอบของโปรแกรมเมอร์ที่จะต้องตรวจสอบให้แน่ใจว่าข้อผิดพลาดเหล่านี้จะไม่เกิดขึ้น

ตารางเปรียบเทียบระหว่าง ตรวจสอบแล้วและไม่ได้ตรวจสอบข้อยกเว้น

พารามิเตอร์ของการเปรียบเทียบ

ตรวจสอบข้อยกเว้น

ข้อยกเว้นที่ไม่ได้เลือก

คำนิยาม

ข้อยกเว้นที่ตรวจสอบคือข้อยกเว้นที่ต้องจับและจัดการโดยคำสั่งตรวจสอบ () ข้อยกเว้นที่ไม่ได้ตรวจสอบไม่ควรถูกจับหรือจัดการเลย
อุบัติเหต

ข้อยกเว้นที่ตรวจสอบต้องได้รับการจัดการโดย catch block ระหว่างเวลาคอมไพล์ ข้อยกเว้นที่ไม่ถูกตรวจจับหรือที่เรียกว่าข้อยกเว้นรันไทม์คือข้อยกเว้นที่ไม่ได้ตรวจสอบ
การจัดการข้อผิดพลาด

Checked Exception จะหยุดโปรแกรมไม่ให้ทำงานจนกว่าจะพยายามตรวจจับจุดบกพร่องหรือข้อผิดพลาด เป็นความรับผิดชอบของโปรแกรมเมอร์ที่จะต้องแน่ใจว่าข้อผิดพลาดเหล่านี้จะไม่เกิดขึ้น
คลาสข้อยกเว้น

มันมีชั้นเรียนพิเศษ ไม่มีชั้นเรียนพิเศษหรือไม่ใช่ส่วนสำคัญของชั้นเรียนพิเศษ
ตัวอย่าง

OutOfMemoryError, NullPointerException และ StackOverflowError IndexOutOfBoundsException

ข้อยกเว้นการตรวจสอบคืออะไร?

Checked Exceptions เกี่ยวข้องอย่างใกล้ชิดกับการทดสอบซอฟต์แวร์ นอกจากนี้ ข้อยกเว้นที่ตรวจสอบแล้วยังเป็นข้อยกเว้นที่ต้องจัดการ มิฉะนั้นโปรแกรมจะยุติการทำงาน ซึ่งหมายความว่าโค้ดที่ตามหลังคำสั่ง throw จะไม่ทำงานหากไม่มี catch block จัดการกับข้อยกเว้น ข้อยกเว้นที่ตรวจสอบมีจุดประสงค์สองประการคือเพื่อหยุดโปรแกรมไม่ให้ดำเนินการต่อเมื่อเกิดข้อผิดพลาด และสามารถให้ข้อมูลการดีบักเกี่ยวกับตำแหน่งที่จะพบข้อผิดพลาดนั้น

คอมไพเลอร์ไม่ได้บังคับให้โปรแกรมเมอร์จัดการกับข้อยกเว้น แต่คลาสใดๆ ที่ขยายคลาสอื่นควรขยายหรือใช้ข้อยกเว้นที่ตรวจสอบทั้งหมดด้วย หากไม่เป็นเช่นนั้น การคอมไพล์คลาสส่วนขยายจะล้มเหลวด้วยข้อผิดพลาดเวลาคอมไพล์ที่ระบุว่าต้องจัดการกับข้อยกเว้นที่ตรวจสอบซูเปอร์คลาสทั้งหมด ซึ่งจะป้องกันไม่ให้มีการใช้การสืบทอดเพื่อหลีกเลี่ยงโหมดความล้มเหลวในตัว

เมื่อมีการส่งข้อยกเว้น ข้อยกเว้นจะถูกส่งไปยังดีบักเกอร์ใน Eclipse หรือระบบปฏิบัติการ ซึ่งจะยุติโปรแกรมตามปกติ ระบบปฏิบัติการจะพิมพ์สแต็กเทรซออกมา การติดตามสแต็กให้ข้อมูลสำหรับการเรียกแต่ละเมธอดตามลำดับที่ถูกเรียก ซึ่งช่วยให้โปรแกรมเมอร์ค้นหาตำแหน่งในโค้ดหรือที่ใดในโฟลว์การดำเนินการของโค้ดได้ว่ามีข้อยกเว้นเกิดขึ้น

Unchecked Exception คืออะไร?

มีข้อยกเว้นที่ไม่ได้ตรวจสอบเพื่อให้โปรแกรมเมอร์สามารถตั้งโปรแกรมได้อย่างยืดหยุ่นและมีประสิทธิภาพมากขึ้น Java ได้รับการออกแบบมาเพื่อให้โปรแกรมเมอร์สร้างแอปพลิเคชันที่ใช้ทรัพยากรอย่างมีประสิทธิภาพและหลีกเลี่ยงลักษณะที่ปรากฏของการชะงักงัน ข้อยกเว้นที่ไม่ได้ตรวจสอบสามารถกำจัดได้ด้วยการออกแบบและการเขียนโค้ดที่รอบคอบ อย่างไรก็ตาม ข้อยกเว้นอื่นๆ ทั้งหมดยกเว้น NullPointerException ที่เกิดขึ้นในโค้ด Java จะถือว่าไม่มีการตรวจสอบ

ข้อยกเว้นที่ไม่ได้ตรวจสอบไม่ควรถูกจับหรือจัดการเลย นอกจากนี้ ยังเป็นวิธีที่ให้โค้ดระดับสูงกว่าบอกโค้ดระดับล่างว่าจะทำอะไรบางอย่างที่ไม่ปลอดภัยต่อเธรด แต่จะไม่ทำให้เกิดปัญหาหากมีการรันเพียงเธรดเดียวในช่วงเวลาหนึ่งๆ เช่น เป็นการอัปเดตข้อมูลบางส่วนหรือแสดงผลกราฟิกบางส่วนบนหน้าจอ

การใช้ข้อยกเว้นที่ไม่ได้ตรวจสอบเป็นเรื่องเสี่ยง หากคลาสจะส่งข้อยกเว้นที่ไม่ได้ตรวจสอบ ใครที่ใช้คลาสนั้นต้องระวังและมีวิธีการที่เข้มงวดในการจัดการกับคลาสนั้น ตัวอย่างเช่น โปรแกรมเมอร์อาจต้องการอ่านข้อมูลบางส่วนจากไฟล์แล้วเขียนกลับมาอีกครั้ง และฟังก์ชันประเภทนี้ไม่จำเป็นต้องมีการซิงโครไนซ์ใดๆ เป็นที่ยอมรับอย่างสมบูรณ์สำหรับแอปพลิเคชันที่จะอ่านข้อมูลเดียวกันสองครั้งในสองเธรดที่ต่างกันโดยไม่มีผลเสียต่อประสิทธิภาพหรือความเสถียรของระบบ

ความแตกต่างหลักระหว่างข้อยกเว้นที่ถูกตรวจสอบและไม่ได้ตรวจสอบ

บทสรุป

ข้อยกเว้นที่ตรวจสอบแล้วเป็นข้อยกเว้นที่ต้องจัดการ มิฉะนั้นโปรแกรมจะยุติการทำงาน อย่างไรก็ตาม ข้อยกเว้นที่ไม่ได้ตรวจสอบคือข้อยกเว้นที่เรียกใช้ฟังก์ชันหยุดสำหรับเธรดทั้งหมด Checked And Unchecked Exception เป็นสัญญาณของความล้มเหลวในโค้ด สิ่งนี้จะเกิดขึ้นเมื่อโค้ดพยายามทำสิ่งที่ไม่คาดคิด หากรหัสที่ทำให้เกิดข้อยกเว้นไม่ได้รับการทดสอบอย่างถูกต้อง อาจทำให้เกิดจุดบกพร่องแปลก ๆ ที่ค้นหาและแก้ไขได้ยาก ในบางกรณี โปรแกรมเมอร์อาจต้องเขียนโปรแกรมใหม่ทั้งหมดตั้งแต่เริ่มต้น นอกจากนี้ Checked And Unchecked Exceptions ยังเกี่ยวข้องกับการทดสอบซอฟต์แวร์อย่างใกล้ชิด

อ้างอิง

ความแตกต่างระหว่างข้อยกเว้นที่ตรวจสอบแล้วและไม่ได้ตรวจสอบ (พร้อมตาราง)