C++ ให้ กลไกการจัดการข้อยกเว้น ที่มีโครงสร้างและสวยงามยิ่งขึ้นแก่เรา กลไกที่มีโครงสร้างนี้สามารถแยกโค้ดที่ดำเนินการตามปกติและส่วนการจัดการข้อยกเว้นของโปรแกรม ทำให้โปรแกรมมีความชัดเจนและอ่านง่ายขึ้น!
ต่อไป มาดู โครงสร้างของการจัดการข้อยกเว้น ซึ่งแบ่งออกเป็นสองส่วน:
ลอง{//คำสั่งการทำงานของโปรแกรมปกติ Throw(นิพจน์ประเภทข้อยกเว้น);}catch(ประเภทข้อยกเว้น 1){//รหัสการจัดการข้อยกเว้น}catch(ประเภทข้อยกเว้น 2){//รหัสการจัดการข้อยกเว้น}catch (ประเภทข้อยกเว้น 3){/ / /รหัสการจัดการข้อยกเว้น}//รหัสต่อไปนี้ด้านบนเป็นรูปแบบโค้ดของการจัดการข้อยกเว้นในภาษา C++ โดยใช้คีย์เวิร์ดสามคำ try , Throw และ catch
เมื่อโค้ดถูกดำเนินการ ขั้นแรกจะพบบล็อกโค้ด try หน้าที่ของมันคือการเริ่มต้นกลไกการจัดการข้อยกเว้น ตรวจสอบข้อยกเว้นที่พบระหว่างการดำเนินการของโค้ด try จากนั้นจึงโยนมันผ่านการโยน นิพจน์ประเภทข้อยกเว้นในการโยนคือ นิพจน์คงที่หรือแปรผัน จากนั้นจะถูกจับคู่ (จับภาพ) กับบล็อกคำสั่ง catch ต่อไปนี้ จากนั้นโค้ดที่เกี่ยวข้องจะถูกดำเนินการ หากไม่พบประเภทที่ตรงกัน ให้ดำเนินการต่อไป หากไม่พบรายการที่ตรงกัน ฟังก์ชัน ยุติ () จะถูกเรียกโดยอัตโนมัติ ฟังก์ชันเริ่มต้นคือ abort() เพื่อยุติโปรแกรม
ต่อไปนี้เป็นการจัดการข้อยกเว้นเมื่อตัวหารเป็น 0 ในระหว่างการดำเนินการหาร:
#include<iostream>usingnamespacestd;intmain(){inta,b;cin>>a>>b;try{if(b==0)throwerror!b<0;}catch(constchar*str){cout<<str <<endl;}จับ(int){cout<<throwint<<endl;}return0;}จะเห็นได้ว่าในการลอง หากพบว่า b เป็น 0 สตริงจะถูกโยนออกไป จากนั้นการจับคู่ catch จะถูกป้อน แน่นอนว่าการจับครั้งแรกจะถูกจับคู่ และค่าของ str จะถูกส่งออก เข้าใจ!