ความแตกต่างของคีย์ – ตรวจสอบกับข้อยกเว้นที่ไม่ได้ตรวจสอบใน Java
ข้อยกเว้นคือข้อผิดพลาดรันไทม์ มีข้อยกเว้นสองประเภทที่เรียกว่าข้อยกเว้นที่ตรวจสอบและข้อยกเว้นที่ไม่ได้ตรวจสอบ เมื่อเกิดข้อยกเว้นที่ตรวจสอบ แอปพลิเคชัน Java จะเชื่อมต่อกับทรัพยากรภายนอก เช่น ไฟล์ อุปกรณ์ หรือฐานข้อมูล คอมไพเลอร์ตรวจสอบข้อยกเว้นเหล่านี้ ตัวอย่างของข้อยกเว้นที่ตรวจสอบ ได้แก่ ข้อยกเว้น IO และข้อยกเว้น FileNotFound เมื่อเกิดข้อยกเว้นที่ไม่ได้เลือก แอปพลิเคชันจะไม่เชื่อมต่อกับทรัพยากรภายนอกใดๆ คอมไพเลอร์ไม่ได้ตรวจสอบข้อยกเว้นเหล่านี้ ตัวอย่างของข้อยกเว้นที่ไม่ได้ตรวจสอบ ได้แก่ Arithmetic Exception และ ArrayOutOfBound Exceptionบทความนี้กล่าวถึงความแตกต่างระหว่างข้อยกเว้นที่ตรวจสอบแล้วและไม่ได้ตรวจสอบใน Java ความแตกต่างที่สำคัญระหว่างข้อยกเว้นที่ตรวจสอบแล้วและไม่ได้ตรวจสอบใน Java คือคอมไพเลอร์ตรวจสอบข้อยกเว้นที่ตรวจสอบแล้วในขณะที่คอมไพเลอร์ไม่ได้ตรวจสอบข้อยกเว้นที่ไม่ได้ตรวจสอบ
เช็คข้อยกเว้นใน Java คืออะไร
เมื่อมีการตรวจสอบข้อยกเว้น แอปพลิเคชัน Java จะเชื่อมต่อกับทรัพยากรภายนอก ทรัพยากรนี้สามารถเป็นอุปกรณ์เช่นเครื่องพิมพ์ อาจเป็นไฟล์หรือฐานข้อมูล ดังนั้น ข้อยกเว้นเหล่านั้นจะถูกตรวจสอบโดยคอมไพเลอร์ ข้อยกเว้น IO เป็นข้อยกเว้นที่ตรวจสอบแล้ว มันเกิดขึ้นเนื่องจากข้อผิดพลาดในอุปกรณ์ เมื่อแอปพลิเคชันเข้าถึงไฟล์ที่ไม่มีอยู่ จะทำให้เกิดข้อยกเว้น FileNotFound แอปพลิเคชันสามารถเชื่อมต่อกับฐานข้อมูลเช่น MySQL, Oracle เป็นต้น เพื่อเก็บข้อมูล หากเกิดข้อผิดพลาดเกี่ยวกับฐานข้อมูล จะเป็นข้อยกเว้นของ SQL นี่เป็นตัวอย่างบางส่วนของข้อยกเว้นที่ตรวจสอบแล้ว ทั้งหมดนี้ แอปพลิเคชันเชื่อมต่อกับทรัพยากรภายนอกในข้อยกเว้นที่ตรวจสอบ จำเป็นต้องจัดการกับข้อยกเว้น หากไม่ได้รับการจัดการ โฟลว์ที่ถูกต้องของโปรแกรมจะถูกยกเลิก และไฟล์คลาสจะไม่ถูกสร้างขึ้น ข้อผิดพลาดสามารถจัดการได้โดยใช้ try, catch block

รูปที่ 01: ตรวจสอบการจัดการข้อยกเว้น
ตามที่กล่าวไว้ข้างต้น FileReader จะอ่านข้อมูลจากไฟล์ ไฟล์ text1.txt ไม่มีอยู่ในตำแหน่งที่ระบุ รหัสที่สามารถให้ข้อยกเว้นอยู่ในบล็อกลอง ข้อความที่จะพิมพ์อยู่ในบล็อก catch เนื่องจากไม่มีไฟล์ชื่อ text1.txt จึงทำให้เกิด FileNotFoundException โดยใช้การจัดการข้อยกเว้น ข้อความจะถูกพิมพ์ไปที่หน้าจอ
Unchecked Exceptions ใน Java คืออะไร
คอมไพเลอร์ไม่ได้ตรวจสอบข้อยกเว้นที่ไม่ได้ตรวจสอบแอปพลิเคชัน Java จะไม่เชื่อมต่อกับรีซอร์สภายนอก เช่น ไฟล์ ฐานข้อมูล หรืออุปกรณ์ ต่างจากข้อยกเว้นที่ตรวจสอบ โดยมีข้อยกเว้นที่ไม่ได้ตรวจสอบ ข้อยกเว้นทั่วไปที่ไม่ได้ตรวจสอบ ได้แก่ Arithmetic, ArrayOutOfBound และ NullPointer Exceptions
int a=10, b=0;
int div=a/b;
System.out.println(div);
นี่จะทำให้เกิดข้อยกเว้นทางคณิตศาสตร์เนื่องจากการดำน้ำ 'a' ด้วยศูนย์ อ้างอิงรหัสด้านล่าง

รูปที่ 02: การจัดการข้อยกเว้นทางคณิตศาสตร์
ตามโปรแกรมข้างต้น ตัวแปร a เป็นค่าจำนวนเต็ม ตัวแปร b คือ 0 การหารของตัวเลขสองตัวนี้หารด้วยศูนย์ ดังนั้นจึงทำให้เกิดข้อยกเว้นทางคณิตศาสตร์ สามารถจัดการได้โดยใช้บล็อก try-catchคำสั่งที่อาจทำให้เกิดข้อยกเว้นจะถูกวางไว้ในบล็อกการลอง ข้อความที่จะแสดงอยู่ในบล็อก catch
ดูโค้ดด้านล่าง
int array1={1, 2, 3, 4, 5};
System.out.println(array1[5]);
จะทำให้เกิดข้อยกเว้น array1 เป็นอาร์เรย์ที่มี 5 องค์ประกอบ ดัชนีเริ่มต้นของอาร์เรย์เป็นศูนย์ การพิมพ์ค่าดัชนี 5th ทำให้เกิดข้อยกเว้นเนื่องจากอยู่นอกขอบเขต ดัชนีสูงสุดของอาร์เรย์1 คือ 4.

รูปที่ 03: การจัดการข้อยกเว้นของ ArrayOutOfBound
ตามโปรแกรมข้างต้น array1 มี 5 องค์ประกอบ การพิมพ์องค์ประกอบด้วยดัชนี 6 จะทำให้เกิดข้อยกเว้นเนื่องจากอยู่นอกขอบเขต ดัชนีสูงสุดที่สามารถเก็บไว้ใน array1 คือ 5 ข้อความแสดงข้อผิดพลาดจะพิมพ์โดยเรียกใช้บล็อก catch
ความคล้ายคลึงกันระหว่าง Checked และ Unchecked Exception ใน Java คืออะไร
ทั้ง Checked และ Unchecked Exception ใน Java เป็นประเภทข้อยกเว้นใน Java
ความแตกต่างระหว่าง Checked และ Unchecked Exception ใน Java คืออะไร
Checked vs Unchecked ข้อยกเว้นใน Java |
|
ข้อยกเว้นที่ตรวจสอบคือข้อผิดพลาดรันไทม์ที่คอมไพเลอร์ตรวจสอบ | ข้อยกเว้นที่ไม่ได้ตรวจสอบคือข้อผิดพลาดรันไทม์ที่คอมไพเลอร์ไม่ได้ตรวจสอบ |
เกิดขึ้น | |
เมื่อมีการตรวจสอบข้อยกเว้น แอปพลิเคชัน Java จะเชื่อมต่อกับทรัพยากรภายนอก เช่น ไฟล์ อุปกรณ์ หรือฐานข้อมูล | เมื่อเกิดข้อยกเว้นที่ไม่ได้เลือก แอปพลิเคชัน Java จะไม่เชื่อมต่อกับทรัพยากรภายนอก |
ตัวอย่าง | |
IOException, FileNotFoundException, SQLException คือตัวอย่างบางส่วนของข้อยกเว้นที่ตรวจสอบ | ข้อยกเว้นทางคณิตศาสตร์ ArrayOutOfBoundException, NullPointerException คือตัวอย่างบางส่วนของข้อยกเว้นที่ไม่ได้ตรวจสอบ |
Summary – Checked vs Unchecked Exception ใน Java
ข้อยกเว้นคือเหตุการณ์ที่ขัดจังหวะการทำงานของโปรแกรมโฟลว์ มีข้อยกเว้นสองประเภท เรียกว่าตรวจสอบข้อยกเว้นและข้อยกเว้นที่ไม่ได้ตรวจสอบ บทความนี้กล่าวถึงความแตกต่างระหว่างข้อยกเว้นที่ตรวจสอบและข้อยกเว้นที่ไม่ได้ตรวจสอบ ความแตกต่างระหว่างข้อยกเว้นที่ตรวจสอบแล้วและไม่ได้ตรวจสอบใน Java คือข้อยกเว้นที่ตรวจสอบแล้วจะถูกตรวจสอบโดยคอมไพเลอร์ในขณะที่คอมไพเลอร์ไม่ได้ตรวจสอบข้อยกเว้นที่ไม่ได้ตรวจสอบ เนื่องจากข้อยกเว้นส่งผลต่อโฟลว์การรันโปรแกรมที่ถูกต้อง จึงเป็นแนวปฏิบัติด้านการเขียนโปรแกรมที่ดีในการจัดการกับสิ่งเหล่านี้