ใน Java ข้อยกเว้นทั้งหมดมีบรรพบุรุษร่วมกัน, โยนได้ (โยนได้) การโยนได้ระบุความธรรมดาของปัญหาใด ๆ ที่สามารถส่งผ่านแอปพลิเคชัน Java ในรหัสโดยกลไกการแพร่กระจายข้อยกเว้น
Trowable มีสองคลาสย่อยที่สำคัญ: ข้อยกเว้นและข้อผิดพลาด ทั้งสองเป็นคลาสย่อยที่สำคัญสำหรับการจัดการข้อยกเว้น Java และแต่ละชุดมีคลาสย่อยจำนวนมาก
①.Exceptionเป็นปัญหาที่คาดการณ์ได้และสามารถกู้คืนได้ในแอปพลิเคชัน โดยทั่วไปความผิดปกติส่วนใหญ่บ่งบอกถึงปัญหาปานกลางถึงเล็กน้อย โดยทั่วไปข้อยกเว้นจะถูกสร้างขึ้นในสภาพแวดล้อมที่เฉพาะเจาะจงและมักจะเกิดขึ้นในวิธีการเฉพาะและการดำเนินงานของรหัส ในคลาส EchoInput อาจเกิด iOException เมื่อพยายามโทรหาวิธีการอ่านแบบ readline
คลาสข้อยกเว้นมีคลาสย่อยที่สำคัญ RuntimeException คลาส RuntimeException และคลาสย่อยแสดงถึงข้อผิดพลาดที่เกิดขึ้นจาก "การดำเนินการ JVM ทั่วไป" ตัวอย่างเช่นหากคุณพยายามใช้การอ้างอิงวัตถุที่เป็นโมฆะศูนย์ตัวหารหรืออาร์เรย์เป็นศูนย์ยกเว้นรันไทม์ข้อยกเว้น (nullpointerexception, arithmeticexception) และ arrayIndexoutofboundException ตามลำดับ
② error ระบุปัญหาร้ายแรงในการเรียกใช้แอปพลิเคชัน ข้อผิดพลาดส่วนใหญ่ไม่เกี่ยวข้องกับการกระทำที่ดำเนินการโดยผู้เขียนโค้ด แต่แสดงถึงปัญหากับ JVM (เครื่องเสมือน Java) เมื่อรหัสถูกเรียกใช้ ตัวอย่างเช่นเมื่อ JVM ไม่มีทรัพยากรหน่วยความจำที่จำเป็นในการดำเนินการต่อไปอีกต่อไปจะมี OutofMemoryError ปรากฏขึ้น
การแบ่งระหว่างการตรวจสอบข้อยกเว้นและไม่ตรวจสอบข้อยกเว้น
ข้อยกเว้นใน Java แบ่งออกเป็นสองประเภท:
1. ตรวจสอบข้อยกเว้น (ข้อยกเว้นที่ไม่ใช่ตามปกติ)
2. ข้อยกเว้น unchecked (ข้อยกเว้นรันไทม์)
ข้อยกเว้นรันไทม์
คลาส RuntimeException เป็นคลาสย่อยของคลาสข้อยกเว้น มันถูกเรียกว่าข้อยกเว้นรันไทม์ ข้อยกเว้นรันไทม์ทั้งหมดใน Java จะได้รับการสืบทอดโดยตรงหรือโดยอ้อมจากคลาส RuntimeException
ข้อยกเว้นใด ๆ ใน Java ที่สืบทอดมาจากข้อยกเว้น แต่ไม่ได้มาจาก RuntimeException เป็นข้อยกเว้นที่ไม่ใช่ตามกฎหมาย
การลองสามารถตามมาด้วยการจับหลายครั้ง แต่ไม่ว่าจะมีการจับบล็อกมากที่สุดเท่าไหร่
สำหรับข้อยกเว้นที่ไม่ใช่ตามกฎหมายพวกเขาจะต้องดำเนินการไม่เช่นนั้นไม่สามารถรวบรวมได้
มีสองวิธีในการจัดการกับมัน:
1. ใช้ลอง .. จับใจ .. เพื่อจับภาพ;
2. เขียนประเภทข้อยกเว้นการโยนหลังจากการประกาศวิธีการที่สร้างข้อยกเว้นเช่นการโยนข้อยกเว้นโยนข้อยกเว้นไปยังเลเยอร์ภายนอก
สำหรับข้อยกเว้นรันไทม์พวกเขาสามารถประมวลผลได้หรือไม่ ขอแนะนำให้ไม่จัดการกับข้อยกเว้นรันไทม์
ส่วนขยาย: ความแตกต่างระหว่างข้อผิดพลาดและข้อยกเว้น (ข้อผิดพลาดกับข้อยกเว้น)
1) .java.lang.error: คลาสย่อยของ throwable ใช้เพื่อทำเครื่องหมายข้อผิดพลาดที่สำคัญ แอปพลิเคชันที่เหมาะสมไม่ควรไปลอง/จับข้อผิดพลาด ข้อผิดพลาดส่วนใหญ่ผิดปกติและไม่ควรเกิดขึ้นเลย
java.lang.exception: คลาสย่อยของ throwable ใช้เพื่อระบุโปรแกรมที่สมเหตุสมผลในการจับ นั่นคือมันเป็นเพียงเงื่อนไขการทำงานของโปรแกรมไม่ใช่ข้อผิดพลาดร้ายแรงและโปรแกรมผู้ใช้ได้รับการสนับสนุนให้จับได้
2). ข้อผิดพลาดและ runtimeException และคลาสย่อยของพวกเขาเป็นข้อยกเว้นที่ไม่ได้ตรวจสอบในขณะที่คลาสข้อยกเว้นอื่น ๆ ทั้งหมดได้รับการตรวจสอบข้อยกเว้น
ข้อยกเว้นที่ตรวจสอบ: มักจะถูกโยนออกจากโปรแกรมที่กู้คืนได้และสามารถกู้คืนได้ดีที่สุดจากข้อยกเว้นดังกล่าวโดยใช้โปรแกรม ตัวอย่างเช่น FilenotFoundException, Parseexception ฯลฯ ข้อยกเว้นที่ตรวจสอบเกิดขึ้นในขั้นตอนการรวบรวมและคุณต้องใช้ลอง ... จับ (หรือโยน) หรือการรวบรวมจะไม่ถูกส่งผ่าน
ข้อยกเว้นที่ไม่ได้ตรวจสอบ: โดยปกติจะเป็นข้อยกเว้นที่ไม่ควรเกิดขึ้นหากทุกอย่างเป็นเรื่องปกติ แต่มันจะเกิดขึ้น มันเกิดขึ้นในช่วงเวลารันไทม์และมีความไม่แน่นอนส่วนใหญ่เกิดจากปัญหาเชิงตรรกะในโปรแกรม ตัวอย่างเช่น ArrayIndExOutOfBoundException, ClassCastException และอื่น ๆ จากมุมมองของภาษาเองโปรแกรมไม่ควรใช้ข้อยกเว้นเช่น Catch แม้ว่าพวกเขาสามารถจับและกู้คืนจากข้อยกเว้นเช่น RuntimeException แต่โปรแกรมเมอร์เทอร์มินัลไม่ได้รับการสนับสนุนให้ทำเช่นนี้เพราะไม่จำเป็นต้องทำเช่นนั้น เนื่องจากข้อผิดพลาดประเภทนี้เป็นข้อผิดพลาดและควรได้รับการแก้ไขโปรแกรมควรหยุดทันทีเมื่อเกิดข้อผิดพลาดดังกล่าว ดังนั้นเมื่อเผชิญกับข้อผิดพลาดและข้อยกเว้นที่ไม่ได้ตรวจสอบโปรแกรมควรถูกยกเลิกโดยอัตโนมัติ โปรแกรมเมอร์ไม่ควรทำสิ่งต่าง ๆ เช่นลอง/จับ แต่ควรหาเหตุผลและแก้ไขตรรกะของรหัส
RuntimeException: ระบบ RuntimeException รวมถึงการแปลงประเภทที่ไม่ถูกต้อง
หลักการของการจัดการ RuntimeException คือ: หากมีการรับรู้ RuntimeException มันจะต้องเป็นข้อผิดพลาดของโปรแกรมเมอร์ ตัวอย่างเช่นข้อยกเว้นการเข้าถึงที่อยู่นอกขอบเขตของอาร์เรย์สามารถหลีกเลี่ยงได้โดยการตรวจสอบตัวห้อยอาร์เรย์และขอบเขตอาร์เรย์ (IOException ฯลฯ ) ข้อยกเว้นที่ตรวจสอบโดยทั่วไปเป็นข้อผิดพลาดภายนอกเช่นการพยายามอ่านข้อมูลจากส่วนท้ายของไฟล์ ฯลฯ นี่ไม่ใช่ข้อผิดพลาดของโปรแกรม แต่เป็นข้อผิดพลาดภายนอกที่เกิดขึ้นในสภาพแวดล้อมแอปพลิเคชัน
บทความด้านบน Java_exception Class (บทนำเกี่ยวกับความแตกต่างระหว่างข้อผิดพลาดและข้อยกเว้น) เป็นเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น