Skip to main content
0

รวมเด็ด 7 Exception ใน Java และ วิธีการจัดการกับปัญหาสุดปวดหัว

⭐️ เข้าใจก่อนว่า 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 ลักษณะเดียวกัน

Complete Java Programming

หากใครสนใจเรียนเขียน Java แบบครบจบในคอร์สเดียว จาก “ ศูนย์ ถึง ร้อย” จัดเต็มกว่า 100 ตอน ใน Complete Java Programming เรียนได้แล้ววันนี้ เพียง 3,590.- เท่านั้น สนใจเข้ามาได้ที่นี่เลยย >> https://www.borntodev.com/product/complete-java-programming/

ระบบฝึกทักษะ การเขียนโปรแกรม

ที่พร้อมตรวจผลงานคุณ 24 ชั่วโมง

  • โจทย์ปัญหากว่า 200 ข้อ ที่รอท้าทายคุณอยู่
  • รองรับ 9 ภาษาโปรแกรมหลัก ไม่ว่าจะ Java, Python, C ก็เขียนได้
  • ใช้งานได้ฟรี ! ครบ 20 ข้อขึ้นไป รับ Certificate ไปเลย !!
เข้าใช้งานระบบ DevLab ฟรี !เรียนรู้เพิ่มเติม

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

4

แนะนำสำหรับคุณ

Close Menu

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

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

  • คุกกี้สำหรับการติดตามทางการตลาด

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

บันทึกการตั้งค่า