ข้อยกเว้น C++
ข้อยกเว้น C++
เมื่อรันโค้ด C++ ข้อผิดพลาดต่างๆ อาจเกิดขึ้นได้: ข้อผิดพลาดในการเขียนโปรแกรมโดยโปรแกรมเมอร์ ข้อผิดพลาดเนื่องจากการป้อนข้อมูลที่ไม่ถูกต้อง หรือสิ่งที่ไม่คาดคิดอื่นๆ
เมื่อเกิดข้อผิดพลาด โดยปกติ C++ จะหยุดและสร้างข้อความแสดงข้อผิดพลาด ศัพท์เทคนิคสำหรับสิ่งนี้คือ: C ++ จะส่งข้อยกเว้น (โยนข้อผิดพลาด)
C ++ ลองและจับ
การจัดการข้อยกเว้นใน C++ ประกอบด้วยคำหลักสามคำ: try
, throw
และcatch
:
คำtry
สั่งอนุญาตให้คุณกำหนดกลุ่มของรหัสที่จะทดสอบหาข้อผิดพลาดในขณะที่กำลังดำเนินการ
คีย์เวิร์ดส่ง ข้อthrow
ยกเว้นเมื่อตรวจพบปัญหา ซึ่งช่วยให้เราสร้างข้อผิดพลาดที่กำหนดเองได้
คำcatch
สั่งนี้อนุญาตให้คุณกำหนดกลุ่มของรหัสที่จะดำเนินการ หากเกิดข้อผิดพลาดในบล็อกการลอง
try
และคำcatch
หลักมาเป็นคู่:
ตัวอย่าง
try {
// Block of code to try
throw exception;
// Throw an exception when a problem arise
}
catch () {
// Block of code to handle errors
}
พิจารณาตัวอย่างต่อไปนี้:
ตัวอย่าง
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw (age);
}
}
catch (int
myNum) {
cout << "Access denied - You must be at least 18 years
old.\n";
cout << "Age is: " << myNum;
}
ตัวอย่างอธิบาย
เราใช้try
บล็อกเพื่อทดสอบโค้ด: หากage
ตัวแปรมีค่าน้อยกว่า18
เราจะthrow
ยกเว้น และจัดการกับมันในcatch
บล็อก ของเรา
ในcatch
บล็อกนี้ เราตรวจพบข้อผิดพลาดและดำเนินการบางอย่างกับมัน คำcatch
สั่งใช้พารามิเตอร์ : ในตัวอย่างของเราเราใช้int
ตัวแปร ( myNum
) (เพราะเรากำลังส่งข้อยกเว้นint
ประเภทในtry
บล็อก ( age
)) เพื่อส่งออกค่าage
ของ
หากไม่มีข้อผิดพลาดเกิดขึ้น (เช่น if age
is 20
แทนที่15
หมายความว่าจะมากกว่า 18) catch
บล็อกจะถูกข้ามไป:
ตัวอย่าง
int age = 20;
คุณยังสามารถใช้throw
คีย์เวิร์ดเพื่อส่งออกหมายเลขอ้างอิง เช่น หมายเลข/รหัสข้อผิดพลาดที่กำหนดเองเพื่อวัตถุประสงค์ในการจัดระเบียบ:
ตัวอย่าง
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw 505;
}
}
catch (int myNum) {
cout << "Access denied - You must be at least 18 years old.\n";
cout << "Error number: " << myNum;
}
จัดการกับข้อยกเว้นทุกประเภท (...)
หากคุณไม่ทราบthrow
ประเภท ที่ ใช้ในtry
บล็อก คุณสามารถใช้ไวยากรณ์ "สามจุด" ( ...
) ภายในcatch
บล็อก ซึ่งจะจัดการกับข้อยกเว้นประเภทใดก็ได้:
ตัวอย่าง
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw 505;
}
}
catch (...) {
cout << "Access denied - You must be at least 18 years
old.\n";
}