Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

การจัดการข้อยกเว้นด้วย Try Catch ใน Java

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

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

ใน 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 อย่างมั่นใจแล้ว!