ข้อผิดพลาดของโปรแกรมมักประกอบด้วย: ข้อผิดพลาดทางไวยากรณ์ ข้อผิดพลาดทางตรรกะ และ ความผิดปกติในการดำเนินงาน
มีการแนะนำสิ่งต่อไปนี้ตามลำดับ:
1. ข้อผิดพลาดทางไวยากรณ์:
ทุกคนต้องรู้จากการศึกษาก่อนหน้านี้ว่าหากโค้ดโปรแกรมไม่ตรงตามข้อกำหนดทางไวยากรณ์ คอมไพเลอร์จะแจ้งข้อผิดพลาดระหว่างการคอมไพล์และลิงก์ซึ่งง่ายต่อการค้นหา
2. ข้อผิดพลาดทางตรรกะ:
ในกรณีนี้ หมายความว่าไม่มีปัญหาในการคอมไพล์ ไม่มีข้อผิดพลาด และสามารถรันได้ อย่างไรก็ตาม ผลลัพธ์เอาต์พุตหรือกระบวนการดำเนินการของโปรแกรมไม่เป็นไปตามที่คาดหวัง และไม่สามารถบรรลุผลลัพธ์ที่คาดหวังได้ ข้อผิดพลาดประเภทนี้เรียกว่าข้อผิดพลาดทางตรรกะ และต้องมีการดีบักและการทดสอบอย่างต่อเนื่องเพื่อค้นหา
3. การทำงานผิดปกติ:
ข้อยกเว้นการรัน (ข้อยกเว้น) หมายถึงการหยุดโปรแกรมอย่างผิดปกติเนื่องจากสถานการณ์ที่ไม่คาดคิดในระหว่างกระบวนการทำงาน เช่น หน่วยความจำไม่เพียงพอ ไฟล์ที่เปิดอยู่ไม่มีอยู่ หารด้วย 0 เป็นต้น
เรารู้สองข้อแรกแล้ว และข้อที่สามคือสิ่งที่เราจะอธิบายโดยละเอียดในบทนี้ ภายใต้สถานการณ์ปกติ แม้ว่าข้อผิดพลาดข้อยกเว้นของโปรแกรมไม่สามารถหลีกเลี่ยงได้ แต่ก็สามารถคาดการณ์ได้ และสามารถดำเนินการประมวลผลแบบคาดการณ์เพื่อหลีกเลี่ยงการหยุดทำงานของโปรแกรมและรับรองความสมบูรณ์ของโปรแกรม ลักษณะการทำงานนี้เรียกว่า การจัดการข้อยกเว้น
ในการศึกษาที่ผ่านมา เรามีหลายวิธีในการจับและจัดการกับข้อยกเว้น เช่น การตัดสินค่าที่ส่งคืนของฟังก์ชันการเรียกผ่าน if...else หรือการตรวจสอบข้อมูลคีย์ก่อนที่จะรันโค้ด เป็นต้น หากเกิดปัญหา ให้ใช้ exit ( ) หรือฟังก์ชัน abort() เพื่อยุติโปรแกรม
ตัวอย่างเช่น:
cin>>a>>b;if(b==0)//จับข้อยกเว้น {cout<<Drivide0!<<endl;}else{cout<<a<</<<b<<=a/b<< จบ;}
อย่างที่คุณเห็น ในการศึกษาที่ผ่านมา เรามักจะใช้ if เพื่อตัดสินและป้องกันส่วนสำคัญ อย่างไรก็ตาม วิธีนี้มักจะทำให้โปรแกรมอ่านน้อยลงเนื่องจากมีการตัดสินมากเกินไปในระหว่างการใช้งาน และเมื่อจำเป็น กำหนดค่าที่ส่งคืนของฟังก์ชัน เราไม่สามารถช่วยฟังก์ชันเหล่านั้นที่ไม่ส่งคืนค่าได้ ด้วยเหตุนี้ C++ จึงให้โซลูชันการจัดการข้อยกเว้นแก่เรา