คำถามและคำตอบเกี่ยวกับการจัดการข้อยกเว้น 30 อันดับแรก [สำหรับนักศึกษาใหม่และผู้มีประสบการณ์]
เผยแพร่แล้ว: 2020-09-29การจัดการข้อยกเว้นเป็นแนวคิดที่ใช้ในอัลกอริธึมเพื่อจัดการกับข้อผิดพลาดรันไทม์ที่เป็นไปได้ ซึ่งอาจขัดขวางขั้นตอนปกติของโปรแกรม ข้อผิดพลาดบางประการที่สามารถจัดการได้โดยใช้แนวคิดนี้คือ:
- ClassNotFoundException
- IOException
- SQLException
- RemoteException
- ข้อยกเว้นรันไทม์:
- เลขคณิตข้อยกเว้น
- NullPointerException
- NumberFormatException
- IndexOutOfBoundsException
- ArrayIndexOutOfBoundsException
- StringIndexOutOfBoundsException
ข้อดีของการใช้งานนี้คือการป้องกันความผิดพลาดของโปรแกรม หากมีข้อยกเว้นในขณะดำเนินการโปรแกรม หากไม่มีการจัดการข้อยกเว้น โปรแกรมจะแสดงข้อผิดพลาดเมื่อพบข้อยกเว้น และโปรแกรมที่เหลือจะไม่ถูกดำเนินการ อย่างไรก็ตาม การนำแนวคิดนี้ไปใช้จะเป็นวิธีแก้ปัญหาโดยที่ส่วนที่เหลือของโปรแกรมจะถูกดำเนินการ หากมีความเป็นอิสระในแง่ของข้อยกเว้นที่เกิดขึ้น หากต้องการเรียนรู้เพิ่มเติม โปรดดูหลักสูตรวิทยาศาสตร์ข้อมูลของเรา
อ่าน: ต้องอ่าน 30 คำถามและคำตอบสัมภาษณ์ Selenium: Ultimate Guide
ข้อยกเว้นในการจัดการคำถามและคำตอบในการสัมภาษณ์
1. คุณหมายถึงอะไรโดยข้อยกเว้น?
เป็นสภาวะผิดปกติที่บางครั้งพบเมื่อรันโปรแกรม มันขัดขวางการไหลปกติของโปรแกรม จำเป็นต้องจัดการกับข้อยกเว้นนี้ มิฉะนั้น อาจทำให้โปรแกรมหยุดทำงานกะทันหัน
2. อธิบายว่าสามารถจัดการข้อยกเว้นใน Java ได้อย่างไร กลไกการจัดการข้อยกเว้นที่อยู่เบื้องหลังกระบวนการคืออะไร?

กลไกการจัดการข้อยกเว้นมีสามส่วน สิ่งเหล่านี้เรียกว่า:
- ลองบล็อก: ส่วนของรหัสที่พยายามเรียกใช้งานครั้งแรกและตรวจสอบข้อยกเว้นที่อาจเกิดขึ้น
- บล็อกที่ดักจับ: หากมีข้อยกเว้นใดๆ เกิดขึ้นจากบล็อก 'ลอง' บล็อกนั้นจะถูกดักจับโดยส่วนโค้ดนี้
- บล็อกสุดท้าย: รหัสภายใต้ส่วนนี้จะดำเนินการเสมอโดยไม่คำนึงถึงข้อยกเว้นที่ติดอยู่ในบล็อก 'ลอง' หากมี แม้ว่าจะไม่มีข้อยกเว้น รหัสภายใต้บล็อกนี้จะถูกดำเนินการ
3. เป็นไปได้ไหมที่จะเก็บข้อความอื่นไว้ระหว่างบล็อก 'ลอง', 'จับ' และ 'สุดท้าย'
ไม่แนะนำให้ใส่ข้อความใด ๆ ระหว่างส่วนของ 'ลอง', 'จับ' และ 'สุดท้าย' บล็อก เนื่องจากพวกมันสร้างกลไกการจัดการข้อยกเว้นทั้งหน่วย
พยายาม
{
//รหัสที่ถูกมอนิเตอร์สำหรับข้อยกเว้น
}
//คุณเก็บงบไว้ที่นี่ไม่ได้
จับ (ข้อยกเว้นเช่น)
{
//จับข้อยกเว้นที่เกิดจากบล็อกลอง หากมี
}
//คุณเก็บงบไว้ที่นี่ไม่ได้
ในที่สุด
{
//บล็อกนี้ถูกดำเนินการเสมอโดยไม่คำนึงถึงข้อยกเว้น
}
4. เป็นไปได้หรือไม่ที่จะรวมเฉพาะบล็อก 'ลอง' โดยไม่มีบล็อก 'จับ' และ 'สุดท้าย'
นี้จะทำให้เกิดข้อผิดพลาดในการรวบรวม จำเป็นสำหรับการบล็อก 'ลอง' ตามด้วยบล็อก 'จับ' หรือบล็อก 'สุดท้าย' หากไม่ใช่ทั้งสองอย่าง จำเป็นต้องมีบล็อก 'จับ' หรือ 'สุดท้าย' อย่างใดอย่างหนึ่งเพื่อให้โฟลว์ของการจัดการข้อยกเว้นไม่ถูกรบกวน
5. เป็นไปได้ไหมที่จะเก็บข้อความสั่งหลังจากบล็อก 'สุดท้าย' ถ้าตัวควบคุมกลับมาจากบล็อกสุดท้ายเอง?
ซึ่งจะส่งผลให้เกิดข้อผิดพลาด catch block ที่ไม่สามารถเข้าถึงได้ เนื่องจากการควบคุมจะกลับมาจากบล็อก 'สุดท้าย' เอง คอมไพเลอร์จะล้มเหลวในการดำเนินการโค้ดหลังจากบรรทัดที่มีข้อยกเว้น นั่นคือเหตุผลที่การดำเนินการจะแสดงข้อผิดพลาดของรหัสที่ไม่สามารถเข้าถึงได้
ใฝ่ฝันที่จะไปศึกษาต่อต่างประเทศ? นี่คือโปรแกรมที่ใช่สำหรับคุณ6. อธิบายข้อผิดพลาดในการบล็อก catch ที่ไม่สามารถเข้าถึงได้
ในกรณีของบล็อก catch หลายอัน ลำดับที่วางบล็อก catch จะมาจากบล็อกที่เจาะจงที่สุดไปหาทั่วไปที่สุด นั่นคือ คลาสย่อยของข้อยกเว้นควรมาก่อน จากนั้นซูเปอร์คลาสจะตามมา ในกรณีที่ซูเปอร์คลาสถูกเก็บไว้ก่อน ตามด้วยคลาสย่อยหลังจากนั้น คอมไพเลอร์จะแสดงข้อผิดพลาด catch block ที่ไม่สามารถเข้าถึงได้
คลาสสาธารณะ ExceptionHandling
{
โมฆะคงที่สาธารณะ main(String[] args)
{
พยายาม
{
int i = Integer.parseInt(“ทดสอบ”);
// คำสั่งนี้จะโยน NumberFormatException // เนื่องจากอินพุตที่กำหนดเป็นสตริง ในขณะที่ // รูปแบบที่ระบุเป็นจำนวนเต็ม
}
จับ (ข้อยกเว้นเช่น)
{
System.out.println(“บล็อกนี้จัดการประเภทข้อยกเว้นทั้งหมด”);
// ข้อยกเว้นทุกประเภทสามารถจัดการได้ใน // บล็อกนี้เนื่องจากเป็นข้อยกเว้นระดับสูง
}
จับ (NumberFormatException เช่น)
{
// นี่จะทำให้เวลาคอมไพล์เกิดข้อผิดพลาด
//บล็อกนี้จะไม่สามารถเข้าถึงได้เนื่องจาก
//ข้อยกเว้นจะถูกจับโดยด้านบนแล้ว //catch block
}
}
}
7. พิจารณาสามข้อความในกลุ่ม 'ลอง': คำสั่ง 1 คำสั่ง 2 และคำสั่ง 3 ตามด้วยบล็อก 'จับ' เพื่อตรวจจับข้อยกเว้นที่เกิดขึ้นระหว่างการดำเนินการของบล็อก 'ลอง' สมมติว่ามีการส่งข้อยกเว้นที่คำสั่ง 2 คุณคิดว่าคำสั่ง 3 จะถูกดำเนินการหรือไม่?
คำสั่ง 3 จะไม่ถูกดำเนินการ หากเกิดข้อยกเว้นโดยบล็อก 'ลอง' ณ จุดใด ๆ รหัสที่เหลือหลังจากข้อยกเว้นจะไม่ถูกดำเนินการ ตัวควบคุมโฟลว์จะมาที่บล็อก 'จับ' โดยตรงแทน
8. แยกแยะข้อผิดพลาดและข้อยกเว้นใน Java
ความแตกต่างที่สำคัญระหว่างข้อผิดพลาดและข้อยกเว้นคือในขณะที่ข้อผิดพลาดเกิดจากสภาพแวดล้อมที่ JVM (Java Virtual Machine) กำลังทำงาน ข้อยกเว้นเกิดจากตัวโปรแกรมเอง ตัวอย่างเช่น OutOfMemory เป็นข้อผิดพลาดที่เกิดขึ้นเมื่อ JVM ใช้หน่วยความจำจนหมด
แต่ NullPointerException เป็นข้อยกเว้นที่พบเมื่อโปรแกรมพยายามเข้าถึงวัตถุ null ไม่สามารถกู้คืนจากข้อผิดพลาดได้ ดังนั้น ทางออกเดียวสำหรับข้อผิดพลาดคือการยุติการดำเนินการ อย่างไรก็ตาม เป็นไปได้ที่จะแก้ไขข้อยกเว้นโดยใช้บล็อก try and catch หรือโยนข้อยกเว้นกลับไปที่ฟังก์ชันผู้เรียก
ต้องอ่าน: คำถามและคำตอบสัมภาษณ์ Java
9. ข้อยกเว้นประเภทใดบ้าง? อธิบายพวกเขา
มีข้อยกเว้นสองประเภท:
ตรวจสอบข้อยกเว้น
ประเภทของข้อยกเว้นที่คอมไพเลอร์รู้จักและรู้จัก ข้อยกเว้นเหล่านี้สามารถตรวจสอบได้ในเวลารวบรวมเท่านั้น ดังนั้นจึงเรียกอีกอย่างว่าข้อยกเว้นเวลาคอมไพล์ สิ่งเหล่านี้สามารถจัดการได้โดยใช้บล็อก try and catch หรือโดยใช้คำสั่งโยน หากข้อยกเว้นเหล่านี้ไม่ได้รับการจัดการอย่างเหมาะสม จะทำให้เกิดข้อผิดพลาดในการคอมไพล์ ตัวอย่างรวมถึงคลาสย่อยของ java.lang.Exception ยกเว้น RunTimeException
ข้อยกเว้นที่ไม่ได้ตรวจสอบ
ประเภทของข้อยกเว้นที่คอมไพเลอร์ไม่รู้จัก เกิดขึ้นในเวลาทำงานเท่านั้น ดังนั้นจึงเรียกอีกอย่างว่าข้อยกเว้นรันไทม์ พวกเขาจะไม่ถูกตรวจสอบในเวลารวบรวม ดังนั้น แม้หลังจากการคอมไพล์สำเร็จแล้ว ก็อาจทำให้โปรแกรมหยุดทำงานก่อนเวลาอันควรหากไม่ได้รับการจัดการอย่างเหมาะสม ตัวอย่าง ได้แก่ คลาสย่อยของ java.lang.RunTimeException และ java.lang.Error
10. ลำดับชั้นของข้อยกเว้นใน Java คืออะไร?
java.lang.Throwable เป็น super class ของข้อผิดพลาดและข้อยกเว้นทั้งหมดใน Java คลาสนี้ขยายคลาส java.lang.Object อาร์กิวเมนต์ของ catch block ควรเป็นประเภทหรือประเภทย่อยเท่านั้น คลาส Throwable ประกอบด้วยคลาสย่อยสองคลาส:
- java.lang.Error : นี่คือซูเปอร์คลาสสำหรับข้อผิดพลาดทุกประเภทใน Java ข้อผิดพลาดทั่วไปภายใต้สิ่งนี้คือ –
- java.lang.VirtualMachineError: ภายใต้สิ่งนี้ –
- StackOverFlowError
- OutOfMemoryError
- java.lang.AssertionError
- java.lang.LinkageError: ภายใต้นี้ –
- NoClassDefFoundError
- IncompatibleClassChangeError
- java.lang.VirtualMachineError: ภายใต้สิ่งนี้ –
- java.lang.Exception: นี่คือซูเปอร์คลาสของข้อยกเว้นทุกประเภทใน Java ข้อยกเว้นทั่วไปภายใต้สิ่งนี้คือ –
- RunTimeException
- เลขคณิตข้อยกเว้น
- NumberFormatException
- NullPointerException
- ArrayIndexOutOfBoundsException
- ClassCastException
- java.lang.InterruptedException
- java.lang.IOException
- java.lang.SQLException
- java.lang.ParseException
- RunTimeException
11. ข้อยกเว้นรันไทม์ใน Java คืออะไร? ให้ตัวอย่าง
ข้อยกเว้นที่เกิดขึ้นในขณะใช้งานเรียกว่าข้อยกเว้นรันไทม์ คอมไพเลอร์ไม่รู้จักข้อยกเว้นเหล่านี้ เช่น ข้อยกเว้นที่ไม่ได้ตรวจสอบ ประกอบด้วยคลาสย่อยทั้งหมดของ java.lang.RunTimeException และ java.lang.Error ตัวอย่าง ได้แก่ NumberFormatException, NullPointerException, ClassCastException, ArrayIndexOutOfBoundException, StackOverflowError เป็นต้น
12. กำหนด OutOfMemoryError ใน Java
เป็นคลาสย่อยของ java.lang.Error ซึ่งพบเมื่อ JVM หน่วยความจำไม่เพียงพอ
13. แยกความแตกต่างระหว่าง NoClassDefFoundError และ ClassNotFoundException ใน Java
ทั้ง NoClassDefFoundError และ ClassNotFoundException เกิดขึ้นเมื่อไม่พบคลาสเฉพาะในเวลาทำงาน อย่างไรก็ตาม มันเกิดขึ้นภายใต้สถานการณ์ที่แตกต่างกัน NoClassDefFoundError คือเมื่อมีข้อผิดพลาดเกิดขึ้นเนื่องจากมีคลาสเฉพาะในขณะคอมไพล์แต่หายไปในขณะใช้งาน ClassNotFoundException เกิดขึ้นเมื่อพบข้อยกเว้นสำหรับแอปพลิเคชันที่พยายามโหลดคลาสในขณะใช้งานซึ่งไม่ได้รับการอัพเดตใน classpath
14. บล็อก 'ในที่สุด' จะถูกดำเนินการหรือไม่หากบล็อก 'ลอง' หรือ 'จับ' ส่งคืนการควบคุม
บล็อก 'สุดท้าย' จะถูกดำเนินการเสมอโดยไม่คำนึงว่าบล็อกการลองหรือจับจะส่งคืนการควบคุมหรือไม่
15. เป็นไปได้ไหมที่จะโยนข้อยกเว้นด้วยตนเอง? ถ้าใช่ อธิบายว่าอย่างไร
เป็นไปได้ที่จะโยนข้อยกเว้นด้วยตนเอง ทำได้โดยใช้คีย์เวิร์ด 'throw' ไวยากรณ์สำหรับการส่งข้อยกเว้นด้วยตนเองคือ

โยน InstanceOfThrowableType;
นี่คือตัวอย่างการใช้คีย์เวิร์ด 'throw' เพื่อส่งข้อยกเว้นด้วยตนเอง
พยายาม
{
NumberFormatException เช่น = ใหม่ NumberFormatException(); //ที่นี่เราสร้างวัตถุสำหรับ NumberFormatException อย่างชัดเจน
โยนอดีต; // การขว้างวัตถุ NumberFormatException อย่างชัดเจนโดยใช้การโยนคำสำคัญ
}
จับ (NumberFormatException เช่น)
{
System.out.println("ในบล็อกนี้ สามารถจับวัตถุ NumberFormatException ที่ส่งออกมาอย่างชัดเจนได้");
}
อ่าน: คำถามและคำตอบสัมภาษณ์ฤดูใบไม้ผลิ 35 อันดับแรก: สุดยอดคู่มือ
16. คุณหมายถึงอะไรโดยการโยนข้อยกเว้นใน Java อีกครั้ง?
ข้อยกเว้นที่เกิดขึ้นในบล็อก 'ลอง' จะได้รับการจัดการในบล็อก 'จับ' หากบล็อก 'จับ' ไม่สามารถจัดการกับข้อยกเว้นนั้น เป็นไปได้ว่าบล็อกนั้นสามารถเรียกข้อยกเว้นเดิมซ้ำโดยใช้คำหลัก 'โยน' กลไกนี้เรียกว่าการโยนข้อยกเว้นใหม่ การดำเนินการมีดังนี้:
พยายาม
{
สตริง s = null;
System.out.println(s.length()); ระบบ.out.println(s.length()); // คำสั่งนี้พ่น NullPointerException
}
จับ (NullPointerException เช่น)
{
System.out.println("ตรวจพบ NullPointerException ที่นี่");
โยนอดีต; //ทำการเรียกใช้ NullPointerException . อีกครั้ง
}
17. ทำไมคุณใช้คีย์เวิร์ด 'throws' ใน Java?
หากเป็นไปได้สำหรับวิธีการที่จะส่งข้อยกเว้นหากไม่สามารถจัดการได้ ก็ควรระบุข้อยกเว้นนั้นโดยใช้คำหลัก 'throws' จะเป็นประโยชน์กับฟังก์ชันผู้โทรของเมธอดนั้นในการจัดการข้อยกเว้นนั้น ไวยากรณ์สำหรับการใช้คำหลัก 'throws' คือ
return_type method_name(parameter_list) ส่ง exception_list
{
//รหัส
}
ในที่นี้ exception_list คือรายการข้อยกเว้นที่อาจส่งผ่านเมธอด ข้อยกเว้นเหล่านี้ควรคั่นด้วยเครื่องหมายจุลภาค ตัวอย่างของรหัส:
คลาสสาธารณะ ExceptionHandling
{
โมฆะคงที่สาธารณะ main(String[] args)
{
พยายาม
{
methodWithThrows();
}
จับ (NullPointerException เช่น)
{
System.out.println("NullPointerException ถูกส่งโดย methodWithThrows() วิธีจะถูกจับที่นี่");
}
}
static void methodWithThrows() พ่น NullPointerException
{
สตริง s = null;
System.out.println(s.length()); ระบบ.out.println(s.length()); //คำสั่งนี้พ่น NullPointerException
}
}
18. มักจะแนะนำให้ทำความสะอาดการดำเนินการ เช่น ปิดทรัพยากร DB ภายในบล็อก 'สุดท้าย' ทำไมจึงจำเป็น?
บล็อก 'สุดท้าย' จะถูกดำเนินการเสมอโดยไม่คำนึงถึงข้อเท็จจริง หากมีการยกข้อยกเว้นในบล็อก 'ลอง' หรือหากข้อยกเว้นที่ยกมานั้นติดอยู่ในบล็อก 'จับ' หรือไม่ การรักษาการดำเนินการล้างข้อมูลในบล็อก 'สุดท้าย' ช่วยให้มั่นใจถึงการดำเนินการของการดำเนินการเหล่านี้ในทุกกรณี และจะไม่ได้รับผลกระทบจากข้อยกเว้น ซึ่งอาจเพิ่มขึ้นหรือไม่ก็ได้
19. คุณจะแยกความแตกต่างระหว่าง Final, Final และ Finalize ใน Java อย่างไร?
อย่างแรก 'final' คือคีย์เวิร์ดที่สามารถใช้เพื่อทำให้ตัวแปรหรือเมธอดหรือคลาสไม่สามารถเปลี่ยนแปลงได้ พูดง่ายๆ ก็คือ ถ้าตัวแปรถูกประกาศเป็นตัวแปรสุดท้าย เมื่อเริ่มต้นแล้ว ค่าของตัวแปรนั้นไม่สามารถเปลี่ยนแปลงได้ หากเมธอดถูกประกาศเป็นขั้นสุดท้าย จะไม่สามารถแทนที่หรือแก้ไขในคลาสย่อยได้ หากประกาศคลาสเป็นขั้นสุดท้าย จะไม่สามารถขยายไปยังคลาสอื่นได้อีก
ประการที่สอง 'สุดท้าย' คือบล็อกที่ใช้ในการจัดการกับข้อยกเว้นพร้อมกับบล็อก 'ลอง' และ 'จับ' บล็อกนี้จะดำเนินการเสมอโดยไม่คำนึงถึงข้อยกเว้นที่เพิ่มขึ้นหรือหากมีการจัดการข้อยกเว้นที่ยกขึ้น โดยปกติ บล็อกนี้ใช้เพื่อดำเนินการล้างข้อมูลเพื่อปิดทรัพยากร เช่น การเชื่อมต่อฐานข้อมูล ทรัพยากร I/O เป็นต้น
ประการที่สามเมธอด finalize() เป็นเมธอดที่ได้รับการป้องกัน มันเป็นของคลาส java.lang.Object ทุกคลาสที่สร้างใน Java จะสืบทอดวิธีนี้ เธรดตัวรวบรวมขยะเรียกวิธีนี้ก่อนที่วัตถุจะถูกลบออกจากหน่วยความจำ ก่อนที่อ็อบเจ็กต์จะถูกลบออกจากหน่วยความจำ วิธีนี้ใช้เพื่อดำเนินการล้างข้อมูลบางอย่าง
ป้องกันโมฆะจบ () โยน Throwable
{
//ล้างการดำเนินการ
}
20. ข้อยกเว้นที่กำหนดเองใน java คืออะไร?
คลาสข้อยกเว้นสามารถส่งออกใน Java ได้ตามความต้องการของโฟลว์โปรแกรม ข้อยกเว้นเหล่านี้เรียกว่าข้อยกเว้นที่ผู้ใช้กำหนด สิ่งเหล่านี้เรียกว่าข้อยกเว้นที่กำหนดเอง ข้อยกเว้นเหล่านี้ต้องขยายคลาสใดคลาสหนึ่งในลำดับชั้นของข้อยกเว้น
21. คุณจะอธิบาย ClassCastException ใน Java อย่างไร?
เมื่อ JVM ไม่สามารถส่งวัตถุประเภทหนึ่งไปยังอีกประเภทหนึ่งได้ ข้อยกเว้นนี้จะถูกยกขึ้น มันเป็น RunTimeException
22. แยกความแตกต่างระหว่างการขว้าง การขว้าง และการขว้างปาในภาษาจาวา
อันดับแรก คำหลัก 'throw' ใช้เพื่อส่งข้อยกเว้นด้วยตนเองใน Java การใช้คำหลักนี้ เป็นไปได้ที่จะส่งข้อยกเว้นจากวิธีการหรือบล็อกใดๆ อย่างไรก็ตาม จำเป็นอย่างยิ่งที่ข้อยกเว้นจะต้องเป็นคลาสประเภท java.lang.Throwable หรืออยู่ในหนึ่งในคลาสย่อยของคลาส java.lang.Throwable
ประการที่สอง คีย์เวิร์ด 'throws' ถูกใช้ใน method signature ใน Java หากวิธีการนั้นสามารถแสดงข้อยกเว้นได้ แสดงว่าวิธีนี้ระบุไว้ ข้อยกเว้นที่กล่าวถึงจะได้รับการจัดการโดยฟังก์ชันผู้โทรที่เกี่ยวข้อง ทำได้โดยใช้บล็อก try and catch หรือโดยใช้คีย์เวิร์ด throws
ประการที่สาม super class สำหรับข้อผิดพลาดและข้อยกเว้นทุกประเภทใน Java เรียกว่า Throwable เป็นสมาชิกของแพ็คเกจ java.lang JVM หรือคำสั่ง throw จะเพิ่มอินสแตนซ์ของคลาสนี้หรือคลาสย่อยเท่านั้น บล็อก catch ควรมีเพียงหนึ่งอาร์กิวเมนต์ และควรเป็นประเภทนี้หรือคลาสย่อย ในกรณีที่มีการสร้างข้อยกเว้นที่กำหนดเอง พวกเขาควรขยายคลาสนี้ด้วย
23. อธิบาย StackOverflowError ใน Java
นี่เป็นข้อผิดพลาดที่เกิดจาก JVM เมื่อสแต็กโอเวอร์โฟลว์ในรันไทม์
24. เป็นไปได้ไหมที่จะแทนที่เมธอด super class ที่ส่งข้อยกเว้นที่ไม่ได้ตรวจสอบพร้อมกับตรวจสอบข้อยกเว้นในคลาสย่อย?
เป็นไปไม่ได้เพราะถ้าเมธอด super class ส่งข้อยกเว้นที่ไม่ได้ตรวจสอบ ก็จะถูกแทนที่ในคลาสย่อยด้วยข้อยกเว้นเดียวกันหรือข้อยกเว้นอื่นๆ ที่ไม่ได้ตรวจสอบ แต่ไม่สามารถแทนที่ด้วยข้อยกเว้นที่ตรวจสอบได้
25. กำหนดข้อยกเว้นที่ถูกล่ามโซ่ใน Java
ในโปรแกรม ข้อยกเว้นหนึ่งรายการสามารถทำให้เกิดข้อยกเว้นได้มากมายโดยการกระตุ้นเอฟเฟกต์โดมิโน สิ่งนี้ทำให้เกิดข้อยกเว้น เป็นประโยชน์ที่จะทราบตำแหน่งของสาเหตุที่แท้จริงของข้อยกเว้น สิ่งนี้เป็นไปได้ด้วยฟีเจอร์ chained exceptions ใน Java สิ่งนี้ได้รับการแนะนำตั้งแต่ JDK 1.4 สำหรับการนำข้อยกเว้นแบบลูกโซ่ไปใช้งานใน Java คอนสตรัคเตอร์ใหม่สองตัวและเมธอดใหม่สองวิธีจะรวมอยู่ในคลาส Throwable เหล่านี้คือ
ตัวสร้างของคลาส Throwable:
- Throwable(Throwable cause): สาเหตุคือข้อยกเว้นที่ทำให้เกิดข้อยกเว้นในปัจจุบัน
- Throwable(String msg, Throwable cause): สตริง msg เป็นข้อความข้อยกเว้น ข้อยกเว้นที่ก่อให้เกิดข้อยกเว้นในปัจจุบันเป็นสาเหตุที่นี่
วิธีการของคลาส Throwable:
- เมธอด getCause() : สาเหตุที่แท้จริงของการยกข้อยกเว้นถูกส่งกลับด้วยวิธีนี้
- initCause(Throwable cause) method : สาเหตุของการยกเว้นการเรียกถูกกำหนดโดยวิธีนี้
26. คลาสใดถูกกำหนดให้เป็น super class สำหรับข้อผิดพลาดและข้อยกเว้นทุกประเภทใน Java?
ซูเปอร์คลาสสำหรับข้อผิดพลาดและข้อยกเว้นทุกประเภทคือ java.lang.Throwable ใน Java
27. อะไรที่สามารถจัดว่าเป็นชุดค่าผสมระหว่าง try, catch และ block ได้ถูกต้อง?
การผสมผสานระหว่าง try and catch block
พยายาม
{
//ลองบล็อค
}
จับ (ข้อยกเว้นเช่น)
{
//จับบล็อค
}
การรวมกันของความพยายามและในที่สุดก็บล็อก
พยายาม
{
//ลองบล็อค
}
ในที่สุด
{
//สุดท้ายก็บล็อค
}
การรวมกันของทั้งสาม: ลอง, บล็อก, บล็อกในที่สุด
พยายาม
{
//ลองบล็อค
}
จับ (ข้อยกเว้นเช่น)
{
//จับบล็อค
}
ในที่สุด
{
//สุดท้ายก็บล็อค
}
28. ทำไมคุณถึงใช้วิธี printStackTrace()
วิธีนี้ใช้เพื่อพิมพ์ข้อมูลโดยละเอียดเกี่ยวกับข้อยกเว้นที่เกิดขึ้น
29. ตัวอย่างข้อยกเว้นที่ตรวจสอบมีอะไรบ้าง?
ตัวอย่างของข้อยกเว้นที่ตรวจสอบ ได้แก่ ClassNotFoundException, SQLException และ IOException

30. ตัวอย่างข้อยกเว้นที่ไม่ได้ตรวจสอบมีอะไรบ้าง?
ตัวอย่างของข้อยกเว้นที่ไม่ได้ตรวจสอบ ได้แก่ NullPointerException, ArrayIndexOutOfBoundsException และ NumberFormatException
ยังอ่าน: ต้องอ่าน 47 OOPS คำถามและคำตอบสัมภาษณ์สำหรับ Freshers & ผู้มีประสบการณ์
ห่อ
หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับบิ๊กดาต้า โปรดดูประกาศนียบัตร PG ของ upGrad & IIIT-B ด้านการพัฒนาซอฟต์แวร์แบบครบวงจร ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีการฝึกอบรมที่เข้มงวดมากกว่า 500 ชั่วโมง โครงการและการมอบหมายงานมากกว่า 9 โครงการ IIIT -B สถานะศิษย์เก่า โครงการหลักที่นำไปปฏิบัติได้จริง และความช่วยเหลือด้านงานกับบริษัทชั้นนำ
หากคุณสนใจที่จะเรียนรู้ Data Science และเลือกประกอบอาชีพในสาขานี้ โปรดดูที่ IIIT-B & upGrad's Executive PG Program in Data Science ซึ่งสร้างขึ้นสำหรับมืออาชีพที่ทำงานและมีกรณีศึกษาและโครงการมากกว่า 10 รายการ เวิร์กช็อปภาคปฏิบัติ , การให้คำปรึกษากับผู้เชี่ยวชาญในอุตสาหกรรม, ตัวต่อตัวกับที่ปรึกษาในอุตสาหกรรม, การเรียนรู้มากกว่า 400 ชั่วโมงและความช่วยเหลือด้านงานกับบริษัทชั้นนำ
