มีปัญหาต่าง ๆ ในโปรแกรมเสมอ เพื่อให้สามารถเปิดใช้งานการทำงานปกติในระหว่างการดำเนินการของโปรแกรมกลไกการจัดการข้อยกเว้นที่จัดทำโดย Java จะถูกใช้เพื่อจับข้อยกเว้นที่เป็นไปได้จัดการข้อยกเว้นและเปิดใช้งานโปรแกรมให้ทำงานตามปกติ นี่คือการจัดการข้อยกเว้น Java
1. ข้อยกเว้นที่จับได้
ข้อยกเว้นที่สามารถติดอยู่ใน Java จะแบ่งออกเป็นข้อยกเว้นที่ควบคุมได้และรันไทม์
1. ข้อยกเว้นที่ควบคุมได้
ใน Java ข้อผิดพลาดที่คาดการณ์ได้เหล่านั้นสามารถประมวลผลได้ในระหว่างการรวบรวมโปรแกรมและข้อมูลข้อผิดพลาดที่เฉพาะเจาะจงสามารถให้ได้ ข้อผิดพลาดเหล่านี้เรียกว่าข้อยกเว้นที่สามารถควบคุมได้ ข้อยกเว้นที่ควบคุมได้ทั่วไปมีดังนี้:
คำอธิบายข้อยกเว้น ioexception เมื่อมีข้อยกเว้น I/O บางอย่างเกิดขึ้นข้อยกเว้นนี้จะถูกโยนทิ้ง SQLException ให้ข้อมูลเกี่ยวกับข้อผิดพลาดในการเข้าถึงฐานข้อมูลหรือข้อผิดพลาดอื่น ๆ ClassnotFoundException ไม่พบข้อยกเว้น Nosuchfieldexception สัญญาณที่สร้างขึ้นเมื่อคลาสไม่มีฟิลด์ที่มีชื่อที่ระบุ Nosuchmethodexception ข้อยกเว้นถูกโยนทิ้ง
2. ข้อยกเว้นรันไทม์
ข้อผิดพลาดที่ไม่สามารถตรวจพบได้โดยคอมไพเลอร์ใน Java เรียกว่าข้อยกเว้นรันไทม์ ข้อยกเว้นรันไทม์ทั่วไปมีดังนี้:
คำอธิบายข้อยกเว้น indexoutofboundsexception บ่งชี้ว่าข้อยกเว้นถูกโยนลงเมื่อค่าดัชนีของคอลเลกชันหรืออาร์เรย์อยู่นอกช่วง nullpointerexception โยนข้อยกเว้นเมื่อแอปพลิเคชันพยายามใช้ null ที่วัตถุที่จำเป็น คลาสย่อยที่ไม่ใช่อินสแตนซ์
2. จัดการข้อยกเว้น
เมื่อมีข้อยกเว้นเกิดขึ้นใน Java คุณสามารถใช้ลอง ... จับลอง ... จับ ... ในที่สุดหรือลอง ... ในที่สุดก็จัดการกับมัน
1. ใช้ลอง .... จับเพื่อจัดการข้อยกเว้น
หลังจากลองมีข้อความที่ดำเนินการตามปกติและหลังจากจับมีข้อความที่จัดการข้อยกเว้น วงเล็บของการจับเป็นประเภทข้อยกเว้นที่โปรแกรมจำเป็นต้องจัดการ รูปแบบไวยากรณ์มีดังนี้:
ลอง {คำสั่งที่ดำเนินการตามปกติ} catch (Exception e) {คำสั่งที่จัดการข้อยกเว้น}นี่คือตัวอย่างของข้อยกเว้นทางคณิตศาสตร์ดังนี้
การทดสอบคลาสสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {int result = 1 /0; ลอง {system.out.println (ผลลัพธ์); } catch (exception e) {system.out.println ("โยนข้อยกเว้น:" + e.getMessage ()); -ที่นี่ 1/0 เป็นอัลกอริทึมข้อยกเว้นเนื่องจากตัวหารไม่สามารถเป็น 0 ผลการดำเนินการมีดังนี้:
เนื่องจากมีข้อยกเว้นคำสั่งหลังจากลองไม่ได้ดำเนินการดังนั้นคำสั่งหลังจากจับจะถูกเรียกใช้งาน ในหมู่พวกเขา "E.getMessage ()" เป็นวิธีการรับข้อมูลข้อยกเว้นซึ่งใช้เพื่อรับสตริงข้อความโดยละเอียด นอกจากนี้ยังมีวิธี PrintStackTrace () ซึ่งใช้ในการส่งออกสแต็กการติดตามไปยังสตรีมข้อผิดพลาดมาตรฐาน และวิธีการ ToString () ใช้เพื่อรับคำอธิบายสั้น ๆ
2. ใช้ลอง. จับ. ในที่สุดก็จัดการข้อยกเว้น
ที่นี่ข้อความหลังจากลองและจับจะเหมือนกับก่อนหน้านี้และข้อความหลังจากนั้นในที่สุดก็ต้องดำเนินการโดยไม่คำนึงว่ามีข้อยกเว้นเกิดขึ้นหรือไม่ ดังนั้นบล็อกคำสั่งสุดท้ายมักจะใช้ในการรวบรวมขยะ รูปแบบไวยากรณ์มีดังนี้:
ลอง {คำสั่งที่ดำเนินการตามปกติ} catch (Exception e) {คำสั่งที่จัดการข้อยกเว้น} ในที่สุด {คำสั่งที่จะถูกประมวลผลอย่างแน่นอน}3. ใช้ลอง. ในที่สุดก็จัดการข้อยกเว้น
เมื่อมีข้อยกเว้นเกิดขึ้นในโปรแกรมจะสามารถประมวลผลได้ในบล็อกคำสั่งสุดท้าย นอกจากนี้เมื่อไม่มีข้อยกเว้นในโปรแกรมหลังจากดำเนินการคำสั่งระหว่างการลองและในที่สุดรหัสในบล็อกคำสั่งสุดท้ายจะถูกดำเนินการ รูปแบบไวยากรณ์มีดังนี้:
ลอง {คำสั่งที่ต้องดำเนินการ} ในที่สุด {คำสั่งที่จะดำเนินการอย่างแน่นอน}3. โยนข้อยกเว้น
สำหรับข้อยกเว้นที่เกิดขึ้นในโปรแกรมนอกเหนือจากการลองข้างบน ... การประมวลผลคำสั่งจับคุณยังสามารถใช้คำประกาศหรือโยนคำสั่งเพื่อโยนข้อยกเว้น
1. ใช้การประกาศโยนเพื่อโยนข้อยกเว้น
การขว้างจะใช้สำหรับการประกาศวิธีการโยนข้อยกเว้นเมื่อประกาศวิธีการโดยใช้การประกาศโยนแล้วจัดการข้อยกเว้นในการเรียกวิธีการ
หากคุณต้องการประกาศข้อยกเว้นหลายข้อยกเว้นแต่ละข้อยกเว้นควรคั่นด้วยเครื่องหมายจุลภาคและรูปแบบไวยากรณ์มีดังนี้:
ชื่อวิธีการประเภทข้อมูลชื่อ (รายการพารามิเตอร์อย่างเป็นทางการ) พ่นข้อยกเว้นคลาส 1, ข้อยกเว้นคลาส 2, ... , คลาสยกเว้นคลาส n {method body;}ตัวอย่างเช่นโยนข้อยกเว้นยกเว้นโดยใช้การโยน
โมฆะสาธารณะ showinfo () พ่นข้อยกเว้น {// โยน fileinputStream ใน = ใหม่ fileInputStream ("c: //record.txt"); // สร้างวัตถุ io}2. ใช้คำสั่งโยนเพื่อโยนข้อยกเว้น
หากคุณต้องการให้โปรแกรมโยนข้อยกเว้นด้วยตัวเองคุณสามารถใช้คำสั่งการโยนเพื่อให้ได้มัน รูปแบบไวยากรณ์มีดังนี้: โยนข้อยกเว้นใหม่ ("ข้อยกเว้น");
สิ่งที่ถูกโยนทิ้งโดยใช้คำสั่งการโยนเป็นอินสแตนซ์ของคลาสข้อยกเว้นซึ่งมักจะใช้กับคำสั่ง IF ชอบ:
ถ้า (x <0) {โยนข้อยกเว้นใหม่ ("ข้อยกเว้นโปรแกรม x ไม่น้อยกว่า 0");}