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

ผู้เขียน: Laura McKinney
วันที่สร้าง: 2 เมษายน 2021
วันที่อัปเดต: 6 พฤษภาคม 2024
Anonim
Java Clean Code Tutorial #6 - Exception Handling - Prefer Runtime Exceptions
วิดีโอ: Java Clean Code Tutorial #6 - Exception Handling - Prefer Runtime Exceptions

เนื้อหา


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

  1. แผนภูมิเปรียบเทียบ
  2. คำนิยาม
  3. ความแตกต่างที่สำคัญ
  4. ข้อสรุป

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

พื้นฐานสำหรับการเปรียบเทียบความผิดพลาดข้อยกเว้น
ขั้นพื้นฐานข้อผิดพลาดเกิดจากการขาดทรัพยากรระบบมีข้อยกเว้นเกิดขึ้นเนื่องจากรหัส
การฟื้นตัวข้อผิดพลาดไม่สามารถกู้คืนได้ข้อยกเว้นสามารถกู้คืนได้
คำสำคัญไม่มีวิธีในการจัดการข้อผิดพลาดด้วยรหัสโปรแกรมจัดการข้อยกเว้นโดยใช้คำหลักสามคำคือ "ลอง", "จับ" และ "โยน"
ผลที่ตามมา
เมื่อตรวจพบข้อผิดพลาดโปรแกรมจะยุติลงอย่างผิดปกติเนื่องจากมีการตรวจพบข้อยกเว้นจะมีการโยนและจับโดยคำหลัก "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

สรุป:

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