แนะนำ, 2024

ตัวเลือกของบรรณาธิการ

ความแตกต่างระหว่างการตรวจสอบและไม่ได้ตรวจสอบข้อยกเว้นใน Java

“ Throwable” เป็นคลาสพาเรนต์ของข้อผิดพลาดและข้อยกเว้นคลาส คลาส“ RuntimeException” และคลาสย่อยของคลาส“ ข้อผิดพลาด” และคลาสย่อยเป็น“ ข้อยกเว้นที่ไม่ได้ตรวจสอบ” ในขณะที่คลาสย่อยที่เหลือของคลาส“ ข้อยกเว้น” ยกเว้น“ RuntimeException” เป็นข้อยกเว้นที่ตรวจสอบ ความแตกต่างพื้นฐานระหว่างข้อยกเว้นที่ตรวจสอบและไม่ได้ตรวจสอบคือข้อยกเว้นที่ ตรวจสอบ ถูกตรวจสอบโดยคอมไพเลอร์ในขณะที่คอมไพเลอร์ไม่ได้ตรวจ สอบข้อยกเว้นที่ไม่ได้ตรวจสอบ

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

แผนภูมิเปรียบเทียบ

พื้นฐานสำหรับการเปรียบเทียบตรวจสอบข้อยกเว้นข้อยกเว้นที่ไม่ได้ตรวจสอบ
ขั้นพื้นฐานคอมไพเลอร์ตรวจสอบข้อยกเว้นที่ตรวจสอบคอมไพเลอร์ไม่ได้ตรวจสอบข้อยกเว้นที่ไม่ได้ตรวจสอบ
ระดับของข้อยกเว้นยกเว้นคลาส "RuntimeException" คลาสลูกทั้งหมดของคลาส "Exception" และคลาส "Error" และคลาสย่อยจะเป็น Checked Exceptionคลาส "RuntimeException" และคลาสย่อยเป็น "Unchecked Exceptions"
การจัดการถ้าเราไม่จัดการกับข้อยกเว้นที่ตรวจสอบแล้ววัตถุคอมไพเลอร์แม้ว่าเราจะไม่จัดการกับข้อยกเว้นที่ไม่ได้ตรวจสอบ แต่คอมไพเลอร์ก็ไม่คัดค้าน
การรวบรวมโปรแกรมไม่ได้รวบรวมหากมีข้อยกเว้นที่ตรวจสอบไม่ได้จัดการในรหัสโปรแกรมโปรแกรมคอมไพล์ได้สำเร็จแม้ว่าจะมีข้อยกเว้นที่ไม่ได้ตรวจสอบในโค้ดโปรแกรม

คำจำกัดความของการตรวจสอบข้อยกเว้น

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

 นำเข้า java.io. *; ตัวอย่างคลาส {โมฆะคงที่สาธารณะหลัก (String args []) {FileInputStream fis = null; fis = new FileInputStream ("B: /myfile.txt"); // ตัวสร้างนี้ FileInputStream (ชื่อไฟล์ไฟล์) จะโยน FileNotFoundException ซึ่งเป็นข้อยกเว้นที่เลือก int k; ในขณะที่ ((k = fis.read ())! = -1) {// วิธีอ่าน () ของคลาส FileInputStream จะส่งข้อยกเว้นที่เลือกไว้: IOException ระบบออก ((ถ่าน) k); } fis.close (); // เมธอด close () ปิดสตรีมอินพุตไฟล์ที่มันพ่น IOException }} 

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

คำจำกัดความของข้อยกเว้นที่ไม่ได้ตรวจสอบ

Unchecked Exceptions เป็นข้อยกเว้นที่ไม่ได้ตรวจสอบโดยคอมไพเลอร์ คอมไพเลอร์คอมไพล์โปรแกรมสำเร็จแม้ว่าข้อยกเว้นจะไม่ได้รับการจัดการโดยรหัส คลาส“ ข้อผิดพลาด” และคลาสลูก, คลาส“ รันไทม์” และคลาสย่อยเป็นข้อยกเว้นที่ไม่ถูกตรวจสอบ

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

 ตัวอย่างคลาส {โมฆะสาธารณะคงที่หลัก (String args []) {int arr [] = {1, 2, 3, 4, 5} System.out.println (ARR [7]); // ArrayIndexOutOfBoundsException }} 

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

ความแตกต่างที่สำคัญระหว่างข้อยกเว้น Checked และ Unchecked

  1. ข้อยกเว้นที่ตรวจสอบอยู่ในความรู้ของคอมไพเลอร์ในขณะที่ข้อยกเว้นที่ตรวจสอบไม่ได้อยู่ในความรู้ของคอมไพเลอร์
  2. ยกเว้นคลาส RuntimeException และ Error คลาสทั้งหมดจะถูกตรวจสอบข้อยกเว้น ในทางกลับกันคลาส RuntimeException และข้อผิดพลาดจะไม่ถูกตรวจสอบข้อยกเว้น
  3. หากข้อยกเว้นที่ตรวจสอบไม่ได้รับการจัดการโดยรหัสแล้ววัตถุรวบรวม ในทางกลับกันถ้าเราไม่จัดการกับข้อยกเว้นที่ไม่ได้ตรวจสอบในรหัสคอมไพเลอร์จะไม่คัดค้าน
  4. หากตรวจสอบข้อยกเว้นที่เกิดขึ้นในรหัสรหัสจะไม่รวบรวมในขณะที่แม้ว่าข้อยกเว้นไม่ได้ตรวจสอบจะไม่ได้รับการจัดการโดยรหัสที่รวบรวมยังรวบรวมรหัส

บันทึก :

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

สรุป:

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

Top