คอมไพเลอร์สำหรับตรวจสอบภาษาการเขียนโปรแกรม Java ในเวลาคอมไพล์ว่าโปรแกรม มีตัวจัดการสำหรับข้อยกเว้นที่ตรวจสอบ โดยการวิเคราะห์ว่าการตรวจสอบข้อยกเว้นใดอาจเป็นผลมาจากการดำเนินการตามวิธีการหรือ ตัวสร้าง สำหรับข้อยกเว้นที่ตรวจสอบแต่ละรายการซึ่งเป็นผลลัพธ์ที่เป็นไปได้ ประโยคการโยนสำหรับเมธอด (§8.4.
คอมไพเลอร์รู้ได้อย่างไรว่ามีข้อยกเว้นประเภทใดเกิดขึ้น
เมื่อมีข้อยกเว้นในโปรแกรมของคุณ catch blocks จะถูกตรวจสอบตามลำดับจากบนลงล่าง เพื่อค้นหาการจับคู่ระหว่างประเภทของข้อยกเว้นที่เกิดขึ้นกับประเภทของข้อยกเว้นที่ catch block กำลังจัดการ
มีการตรวจสอบข้อยกเว้นอย่างไรในช่วงเวลาคอมไพล์
2 คำตอบ. ตรวจสอบข้อยกเว้นที่ตรวจสอบแล้ว ณ เวลารวบรวมเพื่อให้แน่ใจว่าคุณกำลังจัดการกับข้อยกเว้น โดยจับพวกมันหรือประกาศวิธีการบรรจุส่งข้อยกเว้น ที่รันไทม์ ไม่มีความแตกต่างระหว่างข้อยกเว้นที่ตรวจสอบและไม่ได้รับการตรวจสอบ: พวกเขา ได้รับการปฏิบัติเหมือนกันโดย JVM
ฉันจะค้นหาข้อยกเว้นที่ตรวจสอบได้อย่างไร
- checked ข้อยกเว้นถูกตรวจสอบโดยคอมไพเลอร์และในฐานะโปรแกรมเมอร์คุณต้องจัดการกับมันโดยใช้ try-catch-finally throws
- unchecked ข้อยกเว้นไม่ได้ถูกตรวจสอบโดยคอมไพเลอร์ แต่คุณสามารถเลือกจัดการได้อย่างชัดเจน
ตรวจสอบข้อยกเว้นที่สามารถจับได้หรือไม่
3 คำตอบ. ข้อยกเว้นที่ไม่ได้ตรวจสอบคือข้อยกเว้นที่ไม่จำเป็นต้องตรวจพบในบล็อก try - catch ข้อยกเว้นที่ไม่ได้ตรวจสอบคือคลาสย่อยของคลาส RuntimeException หรือ Error ข้อยกเว้นที่ตรวจสอบแล้วคือข้อยกเว้นที่ต้องถูกจับในการลอง - catch block