Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีการแทนที่สามารถโยน super-type ของข้อยกเว้นที่เกิดจากวิธีการแทนที่ใน Java ได้หรือไม่?


หากเมธอด super-class ส่งข้อยกเว้นบางอย่าง เมธอดในคลาสย่อยไม่ควรโยน super type

ตัวอย่าง

ในตัวอย่างต่อไปนี้ เมธอด readFile() ของซูเปอร์คลาสส่งข้อยกเว้น FileNotFoundException และเมธอด readFile() ของคลาสย่อยส่ง IOException ซึ่งเป็นประเภทซุปเปอร์ของ FileNotFoundException

<ก่อนหน้า> นำเข้า java.io.File; นำเข้า java.io.FileNotFoundException; นำเข้า java.io.IOException; นำเข้า java.util.Scanner; คลาสนามธรรม Super { สตริงสาธารณะ readFile (เส้นทางสตริง) โยน FileNotFoundException { โยน FileNotFoundException ใหม่ (); }} คลาสสาธารณะ ExceptionsExample ขยาย Super { @Override สตริงสาธารณะ readFile (เส้นทางสตริง) โยน IOException { //method body ...... }}

ข้อผิดพลาดในการคอมไพล์เวลา

ในการคอมไพล์ โปรแกรมด้านบนให้ผลลัพธ์ต่อไปนี้ -

ExceptionsExample.java:13:ข้อผิดพลาด:readFile (String) ใน ExceptionsExample ไม่สามารถแทนที่ readFile (String) ในสตริงสาธารณะ Sup readFile (เส้นทางสตริง) โยน IOException { ^ วิธีการแทนที่ไม่ส่งข้อผิดพลาด IOException1