คุณสามารถสร้างข้อยกเว้นของคุณเองใน Java และเรียกว่าข้อยกเว้นที่ผู้ใช้กำหนดเองหรือข้อยกเว้นที่กำหนดเอง
ในการสร้างข้อยกเว้นที่ผู้ใช้กำหนด ให้ขยายหนึ่งในคลาสที่กล่าวถึงข้างต้น ในการแสดงข้อความแทนที่ toString() เมธอดหรือเรียกคอนสตรัคเตอร์แบบกำหนดพารามิเตอร์ซูเปอร์คลาสโดยข้ามข้อความในรูปแบบสตริง
MyException(String msg){ super(msg);}หรือสตริงสาธารณะ toString(){ return " MyException [ข้อความแสดงข้อยกเว้นของคุณ]";}
จากนั้น ในคลาสอื่นๆ ทุกที่ที่คุณต้องการให้มีการยกข้อยกเว้นนี้ ให้สร้างอ็อบเจ็กต์ของคลาสข้อยกเว้นที่กำหนดเองที่สร้างขึ้น และโยนข้อยกเว้นโดยใช้คีย์เวิร์ด throw
MyException ex =new MyException ();If(condition……….){ โยนอดีต;}
กำหนดเองตรวจสอบและกำหนดเองไม่ตรวจสอบ
-
ข้อยกเว้นทั้งหมดต้องเป็นลูกของ Throwable
-
หากคุณต้องการเขียนข้อยกเว้นที่เลือกซึ่งบังคับใช้โดยอัตโนมัติโดย Handle หรือ Declare Rule คุณต้องขยาย ข้อยกเว้น ชั้นเรียน
-
หากคุณต้องการเขียนข้อยกเว้นรันไทม์ คุณต้องขยาย RuntimeException ชั้นเรียน
ตัวอย่าง:ข้อยกเว้นที่ตรวจสอบเอง
โปรแกรม Java ต่อไปนี้สาธิตวิธีสร้างข้อยกเว้นที่ตรวจสอบเอง
นำเข้า java.util.Scanner;คลาส NotProperNameException ขยายข้อยกเว้น { NotProperNameException (String msg){ super (msg); }} คลาสสาธารณะ CustomCheckedException { ชื่อสตริงส่วนตัว; อายุ int ส่วนตัว; บูลีนแบบคงที่สาธารณะประกอบด้วยAlphabet (ชื่อสตริง) { สำหรับ (int i =0; i='a' &&ch <='z')) { return false; } } คืนค่าจริง; } CustomCheckedException สาธารณะ(ชื่อสตริง อายุ int){ if(!containsAlphabet(name)&&name!=null) { String msg ="ชื่อไม่เหมาะสม (ควรมีเฉพาะอักขระระหว่าง a ถึง z (ตัวเล็กทั้งหมด))"; NotProperNameException exName =ใหม่ NotProperNameException(msg); โยน exName; } this.name =ชื่อ; this.age =อายุ; } โมฆะสาธารณะ display(){ System.out.println("Name of the Student:"+this.name ); System.out.println("อายุของนักเรียน:"+this.age ); } โมฆะคงที่สาธารณะหลัก (สตริง args []) { Scanner sc =สแกนเนอร์ใหม่ (System.in); System.out.println("ป้อนชื่อบุคคล:"); ชื่อสตริง =sc.next(); System.out.println("ป้อนอายุของบุคคล:"); อายุ int =sc.nextInt(); CustomCheckedException obj =CustomCheckedException ใหม่ (ชื่อ, อายุ); obj.display(); }}
ข้อยกเว้นเวลาคอมไพล์
ในการคอมไพล์ โปรแกรมข้างต้นจะสร้างข้อยกเว้นดังต่อไปนี้
CustomCheckedException.java:24:ข้อผิดพลาด:ข้อยกเว้นที่ไม่ได้รายงาน NotProperNameException; ต้องถูกจับหรือประกาศให้โยน exName; ^1 ข้อผิดพลาด
ตัวอย่าง:ข้อยกเว้นที่ไม่ได้ตรวจสอบที่กำหนดเอง
หากคุณเพียงแค่เปลี่ยนคลาสที่ข้อยกเว้นแบบกำหนดเองของคุณรับช่วงเป็น RuntimeException มันจะถูกโยนทิ้งในเวลาทำงาน
<ก่อน>คลาส NotProperNameException ขยาย RuntimeException { NotProperNameException (String msg) { super (msg); }}หากคุณเรียกใช้โปรแกรมก่อนหน้า โดยแทนที่คลาส NotProperNameException ด้วยโค้ดด้านบนและรัน โปรแกรมจะสร้างข้อยกเว้นรันไทม์ต่อไปนี้
ข้อยกเว้นรันไทม์
ป้อนชื่อของบุคคล:Krishna1234ป้อนอายุของบุคคล:20ข้อยกเว้นในเธรด "main" july_set3.NotProperNameException:ชื่อที่ไม่เหมาะสม (ควรมีเฉพาะอักขระระหว่าง a ถึง z (ขนาดเล็กทั้งหมด)) ที่ july_set3.CustomCheckedException(CustomCheckedException.java:25) ที่ july_set3.CustomCheckedException.main(CustomCheckedException.java:41)