เมื่อฉันเรียนรู้การจัดการข้อยกเว้น Java ครั้งแรกฉันจำประโยคสองสามประโยคเกี่ยวกับการจัดการข้อยกเว้นของพ่อแม่ลูก: "วิธีการเรียนระดับเด็กสามารถโยนข้อยกเว้นหรือยกเว้นเด็กที่ถูกโยนโดยวิธีการเรียนระดับผู้ปกครองและตัวสร้างชั้นเด็กจะต้องโยนข้อยกเว้นหรือข้อยกเว้นของผู้ปกครอง ในเวลานั้นฉันไม่ทราบว่าทำไมวิธีการคลาสย่อยต้องโยนข้อยกเว้นเช่นนี้ ต่อมาโดยการเรียนรู้ "การคิดใน Java" ฉันเข้าใจความจริง ตอนนี้ฉันจะตรวจสอบ
1. วิธีการคลาสย่อยสามารถโยนข้อยกเว้นของวิธีการคลาสแม่หรือยกเว้นลูกของพวกเขา
สำหรับข้อ จำกัด นี้ส่วนใหญ่เป็นเพราะคลาสย่อยไม่สามารถตรวจจับข้อยกเว้นได้อย่างถูกต้องเมื่อพวกเขาอยู่ระหว่างการเปลี่ยนแปลงที่สูงขึ้น
การคิดแบบแพ็คเกจ Injava; คลาสนามธรรมสาธารณะ InningDemo1 {Public Void Walk () พ่น baseexception {} public บทคัดย่อเป็นโมฆะ Sing () พ่น baseexception;} class baseexception ขยายข้อยกเว้น {} subexception1 การคิดแบบแพ็คเกจ injava; อินเทอร์เฟซสาธารณะอื่น ๆ ฟังก์ชั่น {งานโมฆะสาธารณะ () โยน runtimeException;} การคิดแบบแพ็คเกจ injava; คลาสสาธารณะ subinningDemo1 ขยาย InningDemo1 ใช้วิธีการอื่น ๆ {// วิธีการย่อยสามารถโยนข้อยกเว้นของวิธีการระดับพาเรนต์ @Override โมฆะสาธารณะเดิน () โยน baseexception {} // แต่ข้อยกเว้นที่ไม่ได้อยู่ในชั้นเรียน ข้อยกเว้นของเมธอดคลาสแม่ @Override โมฆะสาธารณะร้องเพลง () พ่น Subexception1 {} // เมื่ออินเทอร์เฟซและวิธีการที่ใช้งานในคลาสพาเรนต์มีข้อยกเว้นคุณสามารถเลือกที่จะโยนข้อยกเว้นงานโมฆะสาธารณะ () {}}นำตัวอย่างนี้เป็นตัวอย่าง หากมีวิธีนี้ในการเดินโมฆะสาธารณะ subclass () พ่น Cupexception {} ข้อยกเว้นที่วิธีการระดับพาเรนต์ไม่ได้ถูกโยนทิ้ง เราใช้การอ้างอิงของคลาสหลักเพื่อชี้ไปที่ชั้นเด็ก
โมฆะสาธารณะ f () {InningDemo1 Inn = ใหม่ subinningDemo1 (); Inn.walk (); // เมื่อคลาสหลักเรียกวิธีการเดิน () มันไม่ทราบว่ามันจะโยน cupexception ดังนั้นวิธี f () ไม่ทราบวิธีการจับข้อยกเว้น ดังนั้นในช่วงระยะเวลาการรวบรวมควรป้องกันวิธีการย่อยคลาสย่อยจากการโยนข้อยกเว้นแบบสุ่ม -จากตัวอย่างข้างต้นเรายังสามารถเห็นได้ว่าวิธี subclass ไม่สามารถโยนข้อยกเว้นได้
2. ตัวสร้างคลาสย่อยจะต้องโยนข้อยกเว้นหรือข้อยกเว้นของผู้ปกครอง
นี่เป็นเพราะตัวสร้างคลาสย่อยจะถูกเพิ่มโดยค่าเริ่มต้นในตัวสร้างคลาสแม่
การคิดแบบแพ็คเกจ injava; คลาสนามธรรมสาธารณะ inningDemo2 {public inningDemo2 () พ่น subexception {}} คลาส fatherexception ขยายข้อยกเว้น {} คลาส subexception ขยาย fatherexception {} คลาส Penexception ขยายข้อยกเว้น {} แพ็คเกจการคิด Injava; คลาสสาธารณะ subinningDemo2 ขยาย inningDemo2 {สาธารณะ subinningDemo2 () พ่น fatherexception {// ตัวสร้างของคลาสแม่ถูกเพิ่มโดยค่าเริ่มต้นในคอนสตรัคเตอร์ย่อย -3. การสูญเสียที่ผิดปกติ
1. โยนข้อยกเว้นในที่สุดข้อยกเว้นที่โยนอาจหายไป
การคิดแบบแพ็คเกจ injava; คลาสสาธารณะในที่สุด {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {ลอง {ลอง {โยน redexception ใหม่ (); } ในที่สุด {// ครอบคลุมข้อยกเว้นก่อนหน้านี้โยน blueexception ใหม่ (); }} catch (exception e) {system.out.println (e); }}} คลาส redexception ขยายข้อยกเว้น {} คลาส blueexception ขยายข้อยกเว้น {}ผลการทำงาน: Thinkinginjava.blueexception
2. ใช้ผลตอบแทนในที่สุดก็ไม่มีข้อยกเว้นใด ๆ
การคิดแบบแพ็คเกจ injava; คลาสสาธารณะ returnexception {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {ลอง {โยนข้อยกเว้นใหม่ (); } ในที่สุด {return; -เราเห็นว่ามันมีข้อยกเว้น แต่จะไม่มีการส่งออกเมื่อทำงาน
บทความข้างต้นกล่าวถึงการจัดการข้อยกเว้น Java สั้น ๆ (การจัดการข้อยกเว้นของพ่อ-ลูก) เป็นเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่ามันจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น