แผนภูมิเปรียบเทียบ
พื้นฐานของการเปรียบเทียบ | โยน | พ่น |
---|---|---|
ขั้นพื้นฐาน | คำหลักโยนส่งมอบวัตถุข้อยกเว้นที่เราสร้างขึ้นให้กับ JVM ด้วยตนเอง | คีย์เวิร์ด throws ใช้เพื่อมอบหมายความรับผิดชอบในการจัดการข้อยกเว้นให้กับผู้เรียกเมธอด |
วากยสัมพันธ์ | โยน Throwable-instance; | return_type method_name (พารามิเตอร์รายการ) พ่น ExceptionClass_list { // เนื้อหาของวิธีการ } |
ติดตามโดย | คีย์เวิร์ด throw ตามด้วยอ็อบเจ็กต์ข้อยกเว้น | คีย์เวิร์ด throws ตามด้วยรายการคลาสยกเว้นที่สามารถเกิดขึ้นได้ในเมธอด |
จำนวนการโยนยกเว้น | คีย์เวิร์ด throw สามารถโยนอินสแตนซ์ข้อยกเว้นเดียวได้ | คำหลัก throws สามารถประกาศคลาสข้อยกเว้นหลายคลาสคั่นด้วยเครื่องหมายจุลภาค |
ความหมายของการโยน
คีย์เวิร์ด“ throw ” ถูกใช้เพื่อมอบอินสแตนซ์ข้อยกเว้นที่สร้างขึ้นของเราให้กับ JVM (Java Virtual Machine) ด้วยตนเอง หาก "การโยน" ไม่ได้ใช้เพื่อโยนอินสแตนซ์ข้อยกเว้นและเกิดข้อยกเว้นระบบรันไทม์จะส่งอินสแตนซ์ข้อยกเว้นไปยัง JVM ภายในและโปรแกรมจะหยุดทำงานอย่างผิดปกติ รูปแบบทั่วไปของคำสำคัญ throw คือ:
โยน Throwable_instance;
ด้านบน Throwable_instance จะต้องเป็นวัตถุของคลาส Throwable ประเภทดั้งเดิมเช่น int, float หรือ char และอินสแตนซ์ของคลาสที่ไม่สามารถโยนได้ไม่สามารถโยนโดยใช้คีย์เวิร์ด Throw
ให้เรายกตัวอย่างเพื่อทำความเข้าใจกับการโยนคำหลัก
ทดสอบคลาส {โมฆะคงสาธารณะหลัก (String [] args) {โยน ArithmeticException ใหม่ ("/ by zero"); }}
ในโค้ดข้างต้นการโยนคำหลักจะแสดงตัวอย่างของคลาสข้อยกเว้น“ ArithmeticException” หากไม่ได้ใช้คีย์เวิร์ด throw วิธี main () จะสร้างอ็อบเจ็กต์ข้อยกเว้นภายในที่ส่งมอบให้กับ JVM
คะแนนที่ต้องจำเกี่ยวกับการโยนคำหลัก:
- มันส่งมอบอ็อบเจ็กต์ข้อยกเว้นด้วยตนเองให้กับ JVM
- มันใช้ดีที่สุดสำหรับข้อยกเว้นที่ผู้ใช้กำหนดหรือข้อยกเว้นที่กำหนดเอง
- หากหน่วยความจำไม่ได้ถูกจัดสรรให้กับวัตถุข้อยกเว้นที่เกิดจากการโยนคีย์เวิร์ดจะเกิดข้อยกเว้นรันไทม์นั่นคือ NullPointerException
- คีย์เวิร์ด Throw จะหยุดการทำงานของโปรแกรมทันทีหลังจากเกิดขึ้น เราไม่สามารถเขียนคำสั่งใด ๆ ได้โดยตรงหลังจากคำสั่ง Throw หากเราเขียน staement ใด ๆ โดยตรงหลังจากโยนคำสั่งแล้วคอมไพเลอร์จะแสดงข้อผิดพลาดคำสั่งที่ไม่สามารถเข้าถึงได้ในระหว่างการรวบรวม
- เฉพาะโยนของคลาส Throwable เท่านั้นที่สามารถโยนได้โดยใช้คีย์เวิร์ด Throw ถ้าโยนวัตถุไม่ใช่วัตถุของคลาส Throwable แล้วเราได้รับข้อผิดพลาดในการรวบรวม“ พบประเภทที่เข้ากันไม่ได้ . ต้องการ java.lang.Throwable”
บันทึก:
คีย์เวิร์ด Throw ถูกใช้ใน C ++, JAVA, C #, เพื่อทำการยกเว้นด้วยตนเอง
ความหมายของการพ่น
คีย์เวิร์ด“ throws ” ถูกใช้เพื่อมอบหมายความรับผิดชอบในการจัดการข้อยกเว้นที่เกิดขึ้นในเมธอดให้แก่เมธอด caller เมธอดผู้โทรมีหน้าที่จัดการข้อยกเว้นซึ่งอาจเป็นวิธีอื่นหรือ JVM มันประกาศรายการของคลาสข้อยกเว้นที่อาจเกิดขึ้นในวิธีการ
การใช้คีย์เวิร์ด throws ทำให้คอมไพเลอร์ทราบว่าข้อยกเว้นที่เกิดขึ้นในเมธอดนั้นต้องถูกจัดการโดยเมธอดผู้โทรดังนั้นจะไม่มีข้อผิดพลาดในการคอมไพล์เกิดขึ้น แต่วิธีการที่ผู้เรียกต้องจัดการกับข้อยกเว้นหรือมอบหมายความรับผิดชอบในการจัดการข้อยกเว้นให้กับวิธีการลำดับชั้น เมื่อเกิดข้อยกเว้นรันไทม์แม้ว่าหลังจากใช้คีย์เวิร์ด throws จะไม่ป้องกันการยกเลิกโปรแกรมที่ผิดปกติ หากเมธอดผู้เรียกใช้เป็น main () JVM โดยดีฟอลต์จะจัดการกับข้อยกเว้น
รูปแบบทั่วไปของคำหลัก throws คือ:
return_type method_name (พารามิเตอร์รายการ) พ่น exceptionClass_list {// เนื้อหาของวิธีการ}
เราจะเห็นว่าคำหลัก throws ปรากฏขึ้นหลังจากลายเซ็นของวิธีการและสามารถมีรายการของคลาสยกเว้นที่อาจเกิดขึ้นในวิธีการ รายการของคลาสยกเว้นที่เขียนขึ้นหลังจากการแยกคีย์เวิร์ดถูกคั่นด้วยเครื่องหมายจุลภาค
ขอให้เรายกตัวอย่างหนึ่งตัวเพื่อทำความเข้าใจกับคำสำคัญ throws
การทดสอบ calss {โมฆะ static public main (String [] args) พ่น InterruptedException {thread sleep (10000); }}
ในโค้ดด้านบนเธรดหลักจะถูกทำให้หลับเป็นระยะเวลาหนึ่งโดยใช้เมธอด sleep () ตอนนี้เมื่อเมธอดหลักหยุดทำงานอาจเป็นไปได้ที่เธรดอื่นอาจขัดจังหวะเธรดหลัก แต่คีย์เวิร์ด throws ถูกใช้หลังจากลายเซ็นของเมธอด main () ดังนั้นโปรแกรมจะคอมไพล์ได้อย่างง่ายดาย คำหลัก throws กำลังประกาศคลาสข้อยกเว้นที่เลือกไว้ InterruptedException ตอนนี้หากเธรดอื่น ๆ ขัดจังหวะเธรดหลักระหว่างรันไทม์คีย์เวิร์ด throws จะส่งข้อยกเว้นนั้นให้กับผู้เรียกเมธอด main () ซึ่งคือ JVM JVM จะยุติโปรแกรมอย่างผิดปกติ
จุดที่ต้องจำเกี่ยวกับการโยนคำหลัก:
- คีย์เวิร์ด throws ใช้สำหรับประกาศคลาสยกเว้นที่เลือก การใช้คำหลัก throws สำหรับข้อยกเว้นที่ไม่ได้ตรวจสอบจะไม่มีผลกระทบใด ๆ
- ถ้าวิธีการไม่ต้องการจัดการข้อยกเว้นด้วยตนเองมันจะมอบหมายข้อยกเว้นนั้นให้กับวิธีการเรียกของคลาสนั้นโดยใช้คีย์เวิร์ด throws
- การใช้งานเฉพาะช่วยให้การรวบรวมเรียบของโปรแกรม
- หากมีข้อผิดพลาดเกิดขึ้นขณะทำงานโปรแกรมจะหยุดทำงานอย่างผิดปกติแม้หลังจากการใช้งานคีย์เวิร์ด throws
- ขอแนะนำให้ใช้ try / catch block สำหรับการยกเลิกปกติของโปรแกรมหากเกิดข้อยกเว้นที่ runtime
บันทึก:
คีย์เวิร์ด throws ใช้ใน Java เท่านั้น C ++ และ C # ห้ามใช้คำสำคัญ throws
ความแตกต่างที่สำคัญระหว่างการโยนและการโยน
- คีย์เวิร์ด throw, ส่งมอบความรับผิดชอบของการจัดการข้อยกเว้นให้กับ JVM ด้วยตนเองในขณะที่คีย์เวิร์ด throw, ส่งมอบความรับผิดชอบของการจัดการข้อยกเว้นไปยังเมธอด caller ของโค้ดที่เกิดข้อยกเว้น
- คีย์เวิร์ด throw ตามด้วยอ็อบเจ็กต์ข้อยกเว้นที่ส่งมอบให้กับ JVM ในทางตรงกันข้าม throws คำหลักตามมาด้วยคลาสยกเว้นที่สามารถเกิดขึ้นได้ในวิธีการ
- คีย์เวิร์ด throw สามารถโยนอ็อบเจกต์ exception ครั้งเดียวในขณะที่คีย์เวิร์ด Throws สามารถประกาศคลาสยกเว้นหลายคลาสคั่นด้วยเครื่องหมายคอมม่าในแต่ละครั้ง
สรุป:
คีย์เวิร์ด Throw ใช้ดีที่สุดสำหรับข้อยกเว้นที่กำหนดเอง บล็อก try / catch เหมาะสมที่สุดสำหรับการจัดการข้อยกเว้นเมื่อเปรียบเทียบกับคีย์เวิร์ด throws