ความแตกต่างระหว่างการโยน VS. พ่นใน Java

เผยแพร่แล้ว: 2013-07-23

ความแตกต่างระหว่างการโยน VS. พ่นใน Java

คนหนึ่งประกาศ อีกคนทำ

มีคำหลักห้าคำที่เกี่ยวข้องกับการจัดการข้อยกเว้นใน Java เช่น try, catch, ในที่สุด, throw และ throws นอกเหนือจากความแตกต่างระหว่าง final, ultimate และ finalize , throw vs throws เป็นหนึ่งในคำถามสัมภาษณ์ Java ที่ถามบ่อย

  • คีย์เวิร์ด throw ใช้เพื่อโยนข้อยกเว้นจากวิธีการใด ๆ หรือบล็อกสแตติกใน Java ในขณะที่ส่ง คีย์เวิร์ด ซึ่งใช้ในการประกาศเมธอด ระบุว่า ข้อยกเว้นใดที่เมธอดนี้สามารถส่งออกไปได้ พวกเขาไม่สามารถใช้แทนกันได้
  • หากมีเมธอดใดส่งการตรวจสอบ Exception ตามที่แสดงในตัวอย่างด้านล่าง ผู้เรียกสามารถจัดการกับข้อยกเว้นนี้โดยจับมัน หรือสามารถโยนมันทิ้งอีกครั้งโดยการประกาศคำสั่งย่อยอื่นในการประกาศเมธอด
  • คุณสามารถใช้ Throw clause ในส่วนใดก็ได้ของโค้ดที่คุณรู้สึกว่าต้องมีการยกเว้นเฉพาะในวิธีการเรียก

ทำความเข้าใจข้อยกเว้น Java:

หากเมธอดส่งข้อยกเว้น ควรล้อมรอบด้วย try catch block เพื่อดักจับ หรือเมธอดนั้นควรมีส่วนคำสั่ง throws ในลายเซ็น หากไม่มีคำสั่ง throws ในลายเซ็น คอมไพเลอร์ Java JVM จะไม่รู้ว่าต้องทำอย่างไรกับข้อยกเว้น คำสั่ง throws บอกคอมไพเลอร์ว่าข้อยกเว้นเฉพาะนี้จะได้รับการจัดการโดยวิธีการเรียก

ด้านล่างนี้เป็นตัวอย่างง่ายๆ ที่อธิบายพฤติกรรมของ Throw, Throws, Try, Catch, Last block ใน Java

ผลลัพธ์:

ข้อยกเว้นตัวชี้ Null - Crunchify

ตอนนี้เพียงแค่แทนที่บรรทัด 45 และ 46 ด้วยบรรทัดด้านล่างเพื่อดูผลลัพธ์ด้านล่าง:

ผลลัพธ์ใหม่:

รายการ Java Tutorials ทั้งหมดที่คุณอาจสนใจ

เคล็ดลับโบนัสเกี่ยวกับข้อยกเว้น:

  • การทำงานของโปรแกรมปกติจะแตกแขนงออกไปทันทีเมื่อมีการส่งข้อยกเว้น
  • ข้อยกเว้นที่ตรวจสอบต้องถูกจับหรือส่งต่อ สิ่งนี้สามารถทำได้ในคำสั่ง try … catch หรือโดยการกำหนดข้อยกเว้นในนิยามเมธอด
  • ข้อยกเว้นถูกจับโดยบล็อก catch แรกที่มีคลาสข้อยกเว้นที่เกี่ยวข้องตรงกับคลาสหรือซูเปอร์คลาสของข้อยกเว้นที่ส่ง
  • หากไม่พบบล็อก catch ที่ตรงกันในห่วงโซ่ข้อยกเว้น เธรดที่มีข้อยกเว้นที่ส่งออกมาจะถูกยกเลิก
  • บล็อก สุดท้าย หลังจากคำสั่ง try … catch ถูกดำเนินการโดยไม่คำนึงว่าจะมีการตรวจพบข้อยกเว้นหรือไม่
  • การกลับมาภายในบล็อก สุดท้าย จะทำลายลูกโซ่ข้อยกเว้นไปยังผู้เรียกใช้ แม้จะไม่พบข้อยกเว้นก็ตาม