ข้อยกเว้น Java - ลอง...Catch
ข้อยกเว้น Java
เมื่อรันโค้ด Java ข้อผิดพลาดต่างๆ อาจเกิดขึ้นได้: ข้อผิดพลาดในการเขียนโปรแกรมโดยโปรแกรมเมอร์ ข้อผิดพลาดเนื่องจากการป้อนข้อมูลที่ไม่ถูกต้อง หรือสิ่งที่ไม่คาดคิดอื่นๆ
เมื่อเกิดข้อผิดพลาด โดยปกติ Java จะหยุดและสร้างข้อความแสดงข้อผิดพลาด ศัพท์เทคนิคสำหรับสิ่งนี้คือ Java จะส่งข้อยกเว้น (โยนข้อผิดพลาด)
Java ลองและจับ
คำtry
สั่งอนุญาตให้คุณกำหนดกลุ่มของรหัสที่จะทดสอบหาข้อผิดพลาดในขณะที่กำลังดำเนินการ
คำcatch
สั่งนี้อนุญาตให้คุณกำหนดกลุ่มของรหัสที่จะดำเนินการ หากเกิดข้อผิดพลาดในบล็อกการลอง
try
และคำcatch
หลักมาเป็นคู่:
ไวยากรณ์
try {
// Block of code to try
}
catch(Exception e) {
// Block of code to handle errors
}
พิจารณาตัวอย่างต่อไปนี้:
สิ่งนี้จะทำให้เกิดข้อผิดพลาด เนื่องจากไม่มีmyNumbers [10]
public class Main {
public static void main(String[ ] args) {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]); // error!
}
}
ผลลัพธ์จะเป็นดังนี้:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at Main.main(Main.java:4)
หากเกิดข้อผิดพลาดขึ้น เราสามารถใช้try...catch
เพื่อตรวจจับข้อผิดพลาดและรันโค้ดเพื่อจัดการกับมัน:
ตัวอย่าง
public class Main {
public static void main(String[ ] args) {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("Something went wrong.");
}
}
}
ผลลัพธ์จะเป็น:
Something went wrong.
ในที่สุด
คำfinally
สั่งช่วยให้คุณสามารถรันโค้ดได้ after try...catch
โดยไม่คำนึงถึงผลลัพธ์:
ตัวอย่าง
public class Main {
public static void main(String[] args) {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("Something went wrong.");
} finally {
System.out.println("The 'try catch' is finished.");
}
}
}
ผลลัพธ์จะเป็น:
Something went wrong.
The 'try catch' is finished.
คีย์เวิร์ดโยน
คำthrow
สั่งช่วยให้คุณสร้างข้อผิดพลาดที่กำหนดเองได้
คำthrow
สั่งนี้ใช้ร่วมกับ ประเภท ข้อยกเว้น มีข้อยกเว้นหลายประเภทใน Java: ArithmeticException
,
FileNotFoundException
, ArrayIndexOutOfBoundsException
, SecurityException
, ฯลฯ:
ตัวอย่าง
โยนข้อยกเว้นถ้าอายุต่ำกว่า 18 (พิมพ์ "การเข้าถึงถูกปฏิเสธ") หากอายุ 18 ปีขึ้นไป ให้พิมพ์ "สิทธิ์การเข้าถึง":
public class Main {
static void checkAge(int age) {
if (age < 18) {
throw new ArithmeticException("Access denied - You must be at least 18 years old.");
}
else {
System.out.println("Access granted - You are old enough!");
}
}
public static void main(String[] args) {
checkAge(15); // Set age to 15 (which is below 18...)
}
}
ผลลัพธ์จะเป็น:
Exception in thread "main" java.lang.ArithmeticException: Access denied - You must be at least 18 years old.
at Main.checkAge(Main.java:4)
at Main.main(Main.java:12)
หากอายุ 20 ปี คุณจะไม่ได้รับข้อยกเว้น:
ตัวอย่าง
checkAge(20);
ผลลัพธ์จะเป็น:
Access granted - You are old enough!