Skip to main content
0

⭐️ เข้าใจก่อนว่า 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 ฟรี !เรียนรู้เพิ่มเติม

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

BorntoDev

Author BorntoDev

BorntoDev Co., Ltd.

More posts by BorntoDev

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

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

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

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

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

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

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

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