แนะนำ, 2024

ตัวเลือกของบรรณาธิการ

ความแตกต่างระหว่างข้อผิดพลาดและข้อยกเว้นใน Java

“ Throwable” ทำหน้าที่เป็นรูตสำหรับข้อผิดพลาดและลำดับชั้นของ Java “ ข้อผิดพลาด” เป็นเงื่อนไขที่สำคัญที่รหัสของโปรแกรมไม่สามารถจัดการได้ “ ข้อยกเว้น” เป็นสถานการณ์พิเศษที่สามารถจัดการได้โดยรหัสของโปรแกรม ความแตกต่างที่สำคัญระหว่างข้อผิดพลาดและข้อยกเว้นคือ ข้อผิดพลาด เกิดจากการขาดทรัพยากรระบบและ ข้อยกเว้น เกิดขึ้นเนื่องจากรหัสของคุณ ให้เราศึกษาความแตกต่างอื่น ๆ ระหว่างข้อผิดพลาดและข้อยกเว้นพร้อมกับแผนภูมิเปรียบเทียบ

แผนภูมิเปรียบเทียบ

พื้นฐานสำหรับการเปรียบเทียบความผิดพลาดข้อยกเว้น
ขั้นพื้นฐานข้อผิดพลาดเกิดจากการขาดทรัพยากรระบบมีข้อยกเว้นเกิดขึ้นเนื่องจากรหัส
การฟื้นตัวข้อผิดพลาดไม่สามารถกู้คืนได้ข้อยกเว้นสามารถกู้คืนได้
คำสำคัญไม่มีวิธีการจัดการข้อผิดพลาดด้วยรหัสโปรแกรมจัดการข้อยกเว้นโดยใช้คำหลักสามคำคือ "ลอง", "จับ" และ "โยน"
ผลที่ตามมา
เมื่อตรวจพบข้อผิดพลาดโปรแกรมจะหยุดทำงานผิดปกติเนื่องจากมีการตรวจพบข้อยกเว้นจะถูกโยนและจับโดยคำหลัก "throw" และ "catch" ตามลำดับ
ประเภทข้อผิดพลาดถูกจัดประเภทเป็นประเภทไม่ถูกตรวจสอบข้อยกเว้นถูกจัดประเภทเป็นแบบตรวจสอบหรือไม่ถูกตรวจสอบ
บรรจุภัณฑ์ใน Java ข้อผิดพลาดจะถูกกำหนดแพ็คเกจ "java.lang.Error"ใน Java ข้อยกเว้นจะถูกกำหนดใน "java.lang.Exception"
ตัวอย่างOutOfMemory, StackOverFlowการตรวจสอบข้อยกเว้น: NoSuchMethod, ClassNotFound
ข้อยกเว้นที่ไม่ได้ตรวจสอบ: NullPointer, IndexOutOfBounds

คำจำกัดความของข้อผิดพลาด

ข้อผิดพลาด ” เป็นคลาสย่อยของคลาส“ Throwable” ในตัว ข้อผิดพลาดเป็นเงื่อนไขที่สำคัญที่เกิดขึ้นเนื่องจากการขาดทรัพยากรระบบและไม่สามารถจัดการได้โดยรหัสของโปรแกรม ข้อผิดพลาดไม่สามารถกู้คืนได้ด้วยวิธีการใด ๆ เพราะไม่สามารถสร้างโยนจับหรือตอบกลับได้ ข้อผิดพลาดเกิดจากความล้มเหลวจากภัยพิบัติซึ่งโดยปกติโปรแกรมของคุณไม่สามารถจัดการได้

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

นิยามของข้อยกเว้น

“ ข้อยกเว้น” ยังเป็นคลาสย่อยของคลาส“ Throwable” ในตัว ข้อยกเว้นคือเงื่อนไขพิเศษที่เกิดขึ้นในสภาพแวดล้อมรันไทม์ ข้อยกเว้นส่วนใหญ่เกิดขึ้นเนื่องจากรหัสของโปรแกรมของเรา แต่ข้อยกเว้นสามารถจัดการได้โดยตัวโปรแกรมเองเนื่องจากข้อยกเว้นสามารถกู้คืนได้ จัดการข้อยกเว้นโดยใช้คำหลักสามคำคือ“ ลอง”, “ จับ”, “ โยน” ไวยากรณ์ของการเขียนข้อยกเว้นคือ:

 ลอง {// เขียนโค้ดของคุณที่นี่} จับ (ประเภทการยกเว้น) {// เขียนรหัสของคุณที่นี่} 

ในโค้ดด้านบนรหัสที่เขียนในบล็อกลองเป็นรหัสที่คุณต้องการตรวจสอบเพื่อดูข้อยกเว้น หากข้อยกเว้นเกิดขึ้นในบล็อกลองจะถูกโยนโดยใช้คำหลัก“ โยน” ข้อยกเว้นที่เกิดขึ้นสามารถถูกจับได้โดยบล็อก“ catch” ของโค้ดด้านบน “ ประเภทการยกเว้น” เป็นประเภทของข้อยกเว้นที่เกิดขึ้น

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

ความแตกต่างที่สำคัญในข้อผิดพลาดและข้อยกเว้น

  1. ข้อผิดพลาดเกิดขึ้นเฉพาะเมื่อทรัพยากรระบบขาดในขณะที่เกิดข้อยกเว้นถ้ารหัสมีปัญหาบางอย่าง
  2. ข้อผิดพลาดจะไม่สามารถกู้คืนได้ในขณะที่ข้อยกเว้นสามารถกู้คืนได้โดยการเตรียมรหัสเพื่อจัดการข้อยกเว้น
  3. ข้อผิดพลาดจะไม่สามารถจัดการได้ แต่ข้อยกเว้นสามารถจัดการได้โดยรหัสถ้ารหัสการขว้างข้อยกเว้นนั้นเขียนไว้ในบล็อก try และ catch
  4. หากมีข้อผิดพลาดเกิดขึ้นโปรแกรมจะถูกยกเลิกอย่างผิดปกติ ในทางกลับกันหากข้อยกเว้นเกิดขึ้นโปรแกรมจะส่งข้อยกเว้นและจะจัดการโดยใช้บล็อก try และ catch
  5. ข้อผิดพลาดเป็นประเภทที่ไม่ถูกตรวจสอบเช่นข้อผิดพลาดไม่ได้อยู่ในความรู้ของคอมไพเลอร์ในขณะที่ข้อยกเว้นจะถูกจัดประเภทเป็นตรวจสอบและไม่ถูกตรวจสอบ
  6. ข้อผิดพลาดถูกกำหนดไว้ในแพ็คเกจ java.lang.Error ขณะที่ข้อยกเว้นถูกกำหนดไว้ java.lang.Exception

สรุป:

ข้อยกเว้นคือผลลัพธ์ของข้อผิดพลาดที่ทำในการเขียนโปรแกรมและข้อผิดพลาดเป็นผลมาจากการทำงานที่ไม่เหมาะสมของระบบ

Top