⭐️ เข้าใจก่อนว่า Exception คือ ..
เหตุการณ์นึงที่เกิดขึ้นเพื่อหยุดการทำงานของโฟลว์ปกติในโปรแกรม ซึ่งเรามักจะพบได้จาก Error หรือ กรณีผิดปกติของการทำงานทั่วไป และ ถ้าเรารู้ว่าเกิด Exception อะไรขึ้นบ้าง เราก็สามารถจัดการกับมันได้ โดยที่โปรแกรมจะไม่ Crash หรือ ถูกปิดไปนั่นเองเช่น หากเรารู้ว่มีโอกาสที่เกิด FileNotFoundException กรณีที่หาไฟล์ไม่เจอ เราก็สามารถจัดการกับตรงนี้ แล้วขึ้นข้อความบอกให้ User รู้ว่าหาไฟล์ไม่พบได้เลย
เขียนโดย
Kittikorn Prasertsak (Prame)
Founder @ borntoDev
บทความนี้ตีพิมพ์ และ เผยแพร่เมื่อ 21 มิถุนายน 2566
🔥 มาอยู่กับตัวแรก NullPointerException
เป็น Exception ที่พบได้เมื่อมีใครสักคนเรียก Instance ของ “null” Object อาจจะเกิดจากการเข้าถึง Field ต่าง ๆ ในนั้นก็ได้
String str = null;
System.out.println(str.length()); // จะส่ง NullPointerException ออกมา
ArrayIndexOutOfBoundsException
หนึ่งตัวยอดฮิต เมื่อเราเข้าถึง Index ของ Array ที่ไม่ถูกต้อง เช่น มีค่ามากกว่าตำแหน่งที่มีใน Array ปัจจุบัน
int[] array = new int[5];
System.out.println(array[5]); // จะส่ง ArrayIndexOutOfBoundsException ออกมา
ArithmeticException
แปลง่าย ๆ คือ Exception ของการคำนวณด้านคณิตศาสตร์นั่นเอง ที่พบได้บ่อย ๆ คือการ หารด้วย 0
int divideByZero = 42 / 0; // จะส่ง ArithmeticException ออกมา
NumberFormatException
เกี่ยวกับตัวเลขเช่นเดียวกัน แต่เป็นการแปลง String ให้อยู่ใน Format ของตัวเลขนั่นเอง
int num = Integer.parseInt("XYZ"); // จะส่ง NumberFormatException ออกมา
ClassCastException
Exception ตัวนี้จะถูกส่งออกมาเมื่อเราพยายามแปลง Object ต่าง ๆ เป็น Class ย่อย
Object i = Integer.valueOf(42);
String s = (String)i; // จะส่ง ClassCastException ออกมา
IOException
เป็น Exception อีกหนึ่งตัวที่เกิดเมื่อไม่สามารถดำเนินการ Input – output ได้
FileInputStream fis = null;
fis = new FileInputStream("B:/myfile.txt"); // Will throw IOException if file does not exist
int k;
while(( k = fis.read() ) != -1) {
System.out.print((char)k);
}
fis.close();
FileNotFoundException
ตัวนี้จะเป็น Subclass ของ IOException จะส่งออกมาเมื้อไม่สามารถเข้าถึง File / Directory ได้
FileInputStream fis = new FileInputStream("B:/nonexistentfile.txt"); // Will throw FileNotFoundException
แล้วเราจะจัดการกับ Exception เหล่านี้ได้ยังไง ?
เราสามารถใส่ Exception เหล่านี้ไว้ใน Try Catch เพื่อทำการดักจับ Exception ที่เกิดขึ้นได้ เช่นในกรณี
1. NullPointerException
String str = null;
try {
System.out.println(str.length());
} catch (NullPointerException e) {
System.out.println("Caught a NullPointerException");
}
2. ArrayIndexOutOfBoundsException
try {
Object i = Integer.valueOf(42);
String s = (String)i;
} catch (ClassCastException e) {
System.out.println("Caught a ClassCastException");
}
มาดูอีก 2 ตัวอย่างในการจัดการ หรือในกรณี IOException และ การอ่านไฟล์ ก็สามารถทำได้
3. IOException
try {
FileInputStream fis = null;
fis = new FileInputStream("B:/myfile.txt");
int k;
while(( k = fis.read() ) != -1) {
System.out.print((char)k);
}
fis.close();
} catch (IOException e) {
System.out.println("Caught an IOException");
}
4. FileNotFoundException
try {
FileInputStream fis = new FileInputStream("B:/borntoDev.txt");
} catch (FileNotFoundException e) {
System.out.println("Caught a FileNotFoundException");
}
🏁 สุดท้ายก่อนจากกัน
แน่นอนว่าเราก็ได้เข้าใจเกี่ยวกับ Exception ไปแล้ว จริง ๆ Concept นี้ไม่ได้มีแค่ Java นะ แต่หลาย ๆ ภาษาโปรแกรมในโลกนี้ก็มีให้ใช้ และ ใช้ Concept ลักษณะเดียวกัน
หากใครสนใจเรียนเขียน Java แบบครบจบในคอร์สเดียว จาก “ ศูนย์ ถึง ร้อย” จัดเต็มกว่า 100 ตอน ใน Complete Java Programming เรียนได้แล้ววันนี้ เพียง 3,590.- เท่านั้น สนใจเข้ามาได้ที่นี่เลยย >> https://www.borntodev.com/product/complete-java-programming/
ระบบฝึกทักษะ การเขียนโปรแกรม
ที่พร้อมตรวจผลงานคุณ 24 ชั่วโมง
- โจทย์ปัญหากว่า 200 ข้อ ที่รอท้าทายคุณอยู่
- รองรับ 9 ภาษาโปรแกรมหลัก ไม่ว่าจะ Java, Python, C ก็เขียนได้
- ใช้งานได้ฟรี ! ครบ 20 ข้อขึ้นไป รับ Certificate ไปเลย !!