แม้แต่โปรแกรมเมอร์ที่เก่งที่สุดก็ยังทำผิดพลาดในโค้ดของพวกเขา ข้อผิดพลาดอาจเกิดขึ้นเนื่องจากการพิมพ์ผิด การป้อนข้อมูลของผู้ใช้ที่ไม่คาดคิด หรือสาเหตุอื่นๆ ที่ยากต่อการติดตาม
นั่นคือที่มาของการจัดการข้อยกเว้น โค้ดที่ดีรวมถึงตัวจัดการข้อยกเว้น ซึ่งจะตอบสนองต่อข้อผิดพลาดในโค้ดด้วยวิธีที่กำหนดไว้ล่วงหน้า ตัวจัดการข้อยกเว้นมีประโยชน์เนื่องจากแนะนำโปรแกรมเกี่ยวกับวิธีตอบสนองหากมีข้อผิดพลาดเกิดขึ้นและเมื่อใด
ใน Java try...catch
บล็อกใช้สำหรับการจัดการข้อยกเว้น บทช่วยสอนนี้จะกล่าวถึงพื้นฐานของการจัดการข้อยกเว้น วิธีใช้ try...catch
บล็อกเพื่อจัดการกับข้อยกเว้นและวิธีใช้ finally
คำสั่งด้วย try...catch
. เราจะพูดถึงตัวอย่างบางส่วนของ try...catch
บล็อกในการดำเนินการ
ข้อยกเว้น Java
ข้อยกเว้นคือเหตุการณ์ที่ไม่คาดคิดซึ่งเกิดขึ้นเมื่อโปรแกรมถูกเรียกใช้งาน ข้อยกเว้นจะขัดขวางการทำงานของโปรแกรมและอาจทำให้โปรแกรมหยุดทำงานก่อนที่จะเสร็จสิ้น
ข้อยกเว้นเกิดขึ้นได้จากหลายสาเหตุ ซึ่งรวมถึง:ไม่สามารถเข้าถึงเซิร์ฟเวอร์ได้, รหัสผิดพลาด, พิมพ์ผิด, เปิดไฟล์ที่ไม่มีอยู่จริง, การป้อนข้อมูลของผู้ใช้ผิดพลาด และอื่นๆ
ข้อความแสดงข้อผิดพลาดไม่เหมือนกับข้อยกเว้นใน Java ข้อผิดพลาดหมายถึงเงื่อนไขที่โปรแกรมไม่สามารถกู้คืนได้ เช่น หน่วยความจำไม่เพียงพอ ดังนั้น นักพัฒนามักจะไม่จัดการกับข้อผิดพลาด
แต่ข้อยกเว้นเป็นปัญหาภายในโปรแกรมที่สามารถจัดการได้ เมื่อมีการยกข้อยกเว้น วัตถุจะถูกสร้างขึ้นเรียกว่า วัตถุยกเว้น . ออบเจ็กต์เหล่านี้มีข้อมูลเกี่ยวกับข้อยกเว้น เช่น ชื่อและตำแหน่งที่ยกขึ้นในโปรแกรม
ตอนนี้คุณรู้พื้นฐานของการจัดการข้อยกเว้นใน Java แล้ว เราสามารถเริ่มใช้ try...catch
คำสั่งเพื่อจัดการกับข้อยกเว้นเหล่านั้น
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
ลองจับ Java
try...catch
คำสั่งใช้เพื่อจัดการข้อยกเว้นใน Java เพื่อจัดการกับข้อยกเว้น บล็อกของรหัสจะถูกวางไว้ภายใน try_catch
บล็อก.
เมื่อโปรแกรมเจอ try_catch
บล็อกรหัสภายใน try
บล็อกจะถูกดำเนินการ หากเกิดข้อยกเว้น รหัสภายใน catch
บล็อกจะถูกดำเนินการทันที catch
บล็อคจะต้องมาหลังจาก try
บล็อกใน try..catch
คำแถลง.
นี่คือไวยากรณ์สำหรับ try_catch
คำสั่งใน Java:
try { // Code to run } catch (ExceptionType error) { // Code to run when exception is raised } finally { // Code to run even if exception is not raised }
เราจะพูดถึง finally
บล็อกในภายหลังในบทช่วยสอนนี้ แต่สำหรับตอนนี้ เราจะเน้นที่ try_catch
บล็อก. มาดูตัวอย่างกันเพื่อแสดงให้เห็นว่าบล็อกของโค้ดนี้ทำงานอย่างไร
ลองใช้ Catch Java Example
สมมติว่าเรากำลังสร้างโปรแกรมที่ใช้อาร์เรย์ชื่อ studentNames
. เราต้องการพิมพ์ชื่อที่ห้าในอาร์เรย์ studentNames ของเราไปที่คอนโซล อย่างไรก็ตาม มีนักเรียนเพียงหกคนในชั้นเรียนของเรา
ซึ่งจะส่งผลให้เกิดข้อผิดพลาดในโค้ดของเรา เนื่องจากเราจะอ้างอิงถึงค่าที่ไม่มีอยู่จริง นี่คือตัวอย่างโปรแกรมที่พยายามพิมพ์ชื่อนักเรียนด้วยค่าดัชนี 5 (นักเรียนคนที่หกในชั้นเรียนของเรา เนื่องจากค่าดัชนีเริ่มต้นที่ 0):
class Main { public static void main(String[] args) { String[] studentNames = {"Linda", "Greg", "Ron", "Graham", "Alexis"}; System.out.println(studentNames[5]); }
รหัสของเราส่งคืน:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5 at Main.main(Main.java:4)
อย่างที่คุณเห็น โปรแกรมของเราส่งคืนข้อผิดพลาดที่ยาวนาน เนื่องจากเราพยายามอ้างอิงค่าที่ไม่มีอยู่จริง
คราวนี้มาลองใช้ try...catch
. กัน บล็อกเพื่อจัดการกับข้อผิดพลาดของเรา เมื่อพบข้อผิดพลาด โปรแกรมของเราควรพิมพ์ "มีข้อผิดพลาด" เพื่อให้เรารู้ว่ามีบางอย่างผิดพลาด เราสามารถใช้รหัสต่อไปนี้เพื่อทำงานนี้ให้สำเร็จ:
class Main { public static void main(String[] args) { try { String[] studentNames = {"Linda", "Greg", "Ron", "Graham", "Alexis"}; System.out.println(studentNames[5]); } catch (Exception e) { System.out.println("There was an error."); } }
เมื่อเรารันโค้ดของเรา การตอบสนองต่อไปนี้จะถูกส่งกลับ:
There was an error.
นอกจากนี้ เราสามารถระบุ catch
. ได้หลายรายการ บล็อก สิ่งนี้มีประโยชน์เพราะช่วยให้เราสามารถจัดการกับข้อยกเว้นแต่ละรายการได้แตกต่างกัน
ในตัวอย่างข้างต้น ArrayIndexOutOfBoundsException
ถูกยกขึ้น หากเราต้องการทดสอบข้อผิดพลาดนั้นโดยเฉพาะ ให้พิมพ์ข้อความที่กำหนดเองไปที่คอนโซล และทดสอบข้อยกเว้นทั่วไปอื่นๆ เราสามารถใช้คำสั่ง catch ได้หลายคำสั่ง
นี่คือตัวอย่างโปรแกรมที่ทดสอบทั้ง ArrayIndexOutOfBoundsException
และข้อยกเว้นทั่วไปและมีการตอบสนองที่กำหนดเองสำหรับแต่ละข้อผิดพลาด:
class Main { public static void main(String[] args) { try { String[] studentNames = {"Linda", "Greg", "Ron", "Graham", "Alexis"}; System.out.println(studentNames[5]); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("ArrayIndexOutOfBoundsException was raised."); } catch (Exception e) { System.out.println("There was an error."); } } }
ตอนนี้ เมื่อเรารันโปรแกรม ข้อความต่อไปนี้จะถูกพิมพ์ไปยังคอนโซล:
ArrayIndexOutOfBoundsException was raised.
การตอบสนองนี้ถูกส่งกลับเนื่องจาก ArrayIndexOutOfBoundsException
ได้รับการเลี้ยงดูในโปรแกรมของเรา แต่ถ้าเกิดข้อผิดพลาดอื่น รหัสใน Exception e
catch block จะทำงาน และข้อความต่อไปนี้จะถูกพิมพ์ไปยังคอนโซล:
There was an error.
คำชี้แจงสุดท้าย
finally
คำสั่งใช้เพื่อรันบล็อกของโค้ดหลังจาก try...catch
บล็อกถูกดำเนินการแล้ว finally
บล็อกเป็นทางเลือก และจะดำเนินการเสมอหากมีการกำหนดไว้ หากไม่มีข้อยกเว้น finally
บล็อกถูกดำเนินการหลังจากบล็อกการลอง หากมีข้อยกเว้น จะดำเนินการหลังจาก catch
บล็อก.
ลองใช้ตัวอย่างของเราจากด้านบนเพื่อแสดงข้อความสุดท้ายในการดำเนินการ สมมติว่าเราต้องการพิมพ์ข้อความไปที่คอนโซลว่า This block has finished executing
. เพื่อบอกเราว่า try_catch
คำสั่งเสร็จสมบูรณ์ เราสามารถลองใช้รหัสต่อไปนี้:
class Main { public static void main(String[] args) { try { String[] studentNames = {"Linda", "Greg", "Ron", "Graham", "Alexis"}; System.out.println(studentNames[5]); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("ArrayIndexOutOfBoundsException was raised."); } catch (Exception e) { System.out.println("There was an error."); } finally { System.out.println("This block of code has finished executing."); } } }
เมื่อเรารันโค้ดของเรา การตอบสนองต่อไปนี้จะถูกส่งกลับ:
ArrayIndexOutOfBoundsException was raised.
โค้ดบล็อคนี้ดำเนินการเสร็จสิ้น
อย่างที่คุณเห็น รหัสของเรายก ArrayIndexOutOfBoundsException
ข้อยกเว้น ดังที่เราเห็นข้างต้น และรันโค้ดภายใน catch
. ที่เกี่ยวข้อง บล็อก.
ในตัวอย่างข้างต้น เราได้ระบุ finally
คำแถลง. ดังนั้นโค้ดของเราจึงพิมพ์ข้อความว่า This block of code has finished executing
. หลังจาก catch
บล็อกดำเนินการ
บทสรุป
try...catch
บล็อกถูกใช้ใน Java เพื่อจัดการกับข้อยกเว้นอย่างงดงาม รหัสภายใน try
บล็อกถูกดำเนินการ และหากมีการยกข้อยกเว้น รหัสภายใน catch
. ที่เกี่ยวข้อง บล็อกถูกดำเนินการ นอกจากนี้ finally
คำสั่งใช้เพื่อรันโค้ดหลังจาก try...catch
บล็อกได้ดำเนินการแล้ว แม้ว่าจะไม่มีการยกข้อยกเว้นก็ตาม
บทช่วยสอนนี้กล่าวถึงวิธีใช้ try...catch
บล็อกเพื่อจัดการกับข้อยกเว้นใน Java และวิธีใช้ Java finally
บล็อก. นอกจากนี้เรายังได้ดูตัวอย่างของทั้ง try...catch
บล็อกและ finally
คำสั่งที่ใช้ในการจัดการกับข้อผิดพลาด
ตอนนี้คุณมีข้อมูลที่จำเป็นในการจัดการข้อยกเว้นใน Java อย่างมั่นใจแล้ว!