Java Throw: Exception Throw
โปรแกรมสามารถใช้คำสั่งโยนเพื่อโยนข้อยกเว้นที่ชัดเจน รูปแบบปกติของคำสั่งการโยนมีดังนี้:
โยนทิ้งได้
ที่นี่ throwableInstance จะต้องเป็นวัตถุของประเภทคลาสที่สามารถขยายได้หรือประเภท subclass แบบ throwable ประเภทง่าย ๆ เช่น int หรือ char และคลาสที่ไม่สามารถโยนได้เช่นสตริงหรือวัตถุไม่สามารถใช้เป็นข้อยกเว้นได้ มีสองวิธีในการรับวัตถุที่โยนได้: ใช้พารามิเตอร์ในประโยคจับหรือสร้างด้วยตัวดำเนินการใหม่
การดำเนินการของโปรแกรมจะหยุดทันทีหลังจากคำสั่งการโยน; บล็อกลองที่รัดกุมที่สุดนั้นใช้เพื่อตรวจสอบว่ามีคำสั่งจับที่ตรงกับประเภทข้อยกเว้นหรือไม่ หากพบบล็อกการจับคู่การควบคุมจะเปลี่ยนเป็นคำสั่ง หากไม่พบการจับคู่บล็อกการจับคู่ Handler ข้อยกเว้นเริ่มต้นจะขัดจังหวะการดำเนินการของโปรแกรมและพิมพ์ร่องรอยของสแต็ก
ต่อไปนี้เป็นโปรแกรมตัวอย่างที่สร้างและโยนข้อยกเว้น
// แสดงให้เห็นถึง throw.class throwdemo {โมฆะคงที่ demoproc () {ลอง {โยน nullpointerexception ใหม่ ("demo"); / / rethrow ข้อยกเว้น}} โมฆะคงที่สาธารณะหลัก (สตริง args []) {ลอง {demoproc (); โปรแกรมมีสองโอกาสในการจัดการกับข้อผิดพลาดเดียวกัน ขั้นแรกหลัก () ตั้งค่าความสัมพันธ์ข้อยกเว้นจากนั้นเรียก demoproc () จากนั้นเมธอด demoproc () จะตั้งค่าความสัมพันธ์ในการจัดการข้อยกเว้นอื่นและโยนอินสแตนซ์ nullpointerexception ใหม่ทันทีซึ่งถูกจับในบรรทัดถัดไป ข้อยกเว้นจะถูกโยนอีกครั้ง นี่คือผลลัพธ์ผลลัพธ์:
ติดอยู่ใน demoproc.recaught: java.lang.nullpointerexception: Demo
โปรแกรมยังอธิบายถึงวิธีการสร้างวัตถุข้อยกเว้นมาตรฐานใน Java โดยให้ความสนใจเป็นพิเศษกับบรรทัดต่อไปนี้:
โยน nullpointerexception ใหม่ ("สาธิต");
ที่นี่ใหม่ใช้เพื่อสร้างอินสแตนซ์ nullpointerexception ข้อยกเว้นรันไทม์ในตัว Java ทั้งหมดมีสองตัวสร้าง: หนึ่งไม่มีพารามิเตอร์และหนึ่งมีพารามิเตอร์สตริง เมื่อใช้แบบฟอร์มที่สองพารามิเตอร์จะระบุสตริงที่อธิบายข้อยกเว้น หากวัตถุถูกใช้เป็นพารามิเตอร์ในการพิมพ์ () หรือ println () สตริงจะปรากฏขึ้น สิ่งนี้สามารถทำได้โดยการเรียก getMessage () ซึ่งกำหนดโดยการโยนได้
Java โยนประโยค <br /> หากวิธีการอาจทำให้เกิดข้อยกเว้น แต่ไม่ได้จัดการมันจะต้องระบุพฤติกรรมนี้เพื่อให้ผู้โทรของวิธีการสามารถป้องกันตัวเองได้โดยไม่มีข้อยกเว้น ในการทำเช่นนี้คุณสามารถรวมประโยคการโยนในการประกาศวิธีการ ประโยคการโยนแสดงรายการข้อยกเว้นทั้งหมดที่วิธีการอาจโยน นี่เป็นสิ่งจำเป็นสำหรับข้อยกเว้นทั้งหมดของประเภทยกเว้นข้อผิดพลาดหรือ runtimeException และคลาสย่อยของพวกเขา ข้อยกเว้นประเภทอื่น ๆ ทั้งหมดที่วิธีการโยนจะต้องประกาศในประโยคการโยน การไม่ทำเช่นนั้นจะส่งผลให้เกิดข้อผิดพลาดในการรวบรวม
นี่คือรูปแบบทั่วไปของการประกาศวิธีการที่มีประโยคโยน:
พิมพ์เมธอด-ชื่อ (พารามิเตอร์-รายการ) โยนรายการข้อยกเว้น {// body of method}ที่นี่ลิสต์ข้อยกเว้นเป็นรายการข้อยกเว้นที่มีเครื่องหมายจุลภาคที่วิธีการสามารถโยนได้
นี่คือตัวอย่างที่ไม่ถูกต้อง ตัวอย่างนี้พยายามที่จะโยนข้อยกเว้นที่ไม่สามารถจับได้ เนื่องจากโปรแกรมไม่ได้ระบุประโยคการโยนเพื่อประกาศข้อเท็จจริงโปรแกรมจะไม่รวบรวม
// โปรแกรมนี้มีข้อผิดพลาดและจะไม่คอมไพล์คลาส throwsdemo {โมฆะคงที่ drowone () {system.out.println ("Inside Throwone"); String args []) {Throwone ();}} ในการรวบรวมโปรแกรมจำเป็นต้องเปลี่ยนสถานที่สองแห่ง ก่อนอื่นคุณต้องประกาศ Throwone () เพื่อเพิ่มข้อยกเว้นที่ผิดกฎหมาย ประการที่สองหลัก () ต้องกำหนดคำสั่งลอง/จับเพื่อจับข้อยกเว้น ตัวอย่างที่ถูกต้องมีดังนี้:
// นี่ถูกต้องแล้ว class throwsdemo {static void throwone () พ่น ungleclaccessexception {system.out.println ("Inside Throwone"); ) {ลอง {throwone (); นี่คือผลลัพธ์ผลลัพธ์ของตัวอย่าง:
ภายใน Throwecaught Java.lang.illegalaccessexception: Demo