วิธีใช้การจัดการข้อยกเว้นใน C ++



บทความนี้จะช่วยให้คุณเข้าใจว่าการจัดการข้อยกเว้นคืออะไรและวิธีใช้การจัดการข้อยกเว้นใน C ++ พร้อมการสาธิตที่ใช้ได้จริง

ข้อยกเว้น เป็นสภาวะที่ผิดปกติระหว่างเวลาทำงานหรือเวลาคอมไพล์ เป็นแนวคิดที่สำคัญมากใน c ++ บทความนี้จะแนะนำคุณเกี่ยวกับการจัดการข้อยกเว้นใน C ++ พร้อมกับประเภทต่างๆ

คำแนะนำต่อไปนี้จะกล่าวถึงในบทความนี้





มาเริ่มกันเลย

การจัดการข้อยกเว้นใน C ++

ประเภทของข้อยกเว้น

มีข้อยกเว้นสองประเภท



ข้อยกเว้นเวลาทำงาน

มันเป็นข้อยกเว้นที่ถูกจับระหว่างเวลาทำงาน

ข้อยกเว้นเวลาคอมไพล์



เป็นข้อยกเว้นที่ถูกจับระหว่างเวลาคอมไพล์

ดำเนินการต่อด้วยบทความการจัดการข้อยกเว้นใน C ++

java แตกออกจากวิธีการ

การจัดการข้อยกเว้นคืออะไร?

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

เมื่อคุณพิจารณาการจัดการข้อยกเว้นมีสามคำที่เกี่ยวข้อง

ลอง

รหัสภายในบล็อกนี้เป็นเหมือนรหัสทดลองซึ่งอาจทำให้เกิดข้อยกเว้น ข้อยกเว้นนี้ติดอยู่ในบล็อกจับ

จับ

รหัสในบล็อกนี้จะดำเนินการเมื่อรหัสในบล็อกลองแสดงข้อยกเว้น

โยน

คีย์เวิร์ดนี้ใช้เพื่อแสดงข้อยกเว้นเมื่อพบ ข้อยกเว้นจะถูกส่งไปยังตัวจัดการข้อยกเว้น

ไวยากรณ์:

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

ให้เราดูโค้ดตัวอย่างสำหรับการจัดการข้อยกเว้นใน c ++

ตัวอย่างรหัส

#include using namespace std try {// code for try throw & ldquoexception & rdquo} catch (except) {// code for catch} int main () {int x = 1 try {cout<< 'Try Block: '<

เอาท์พุต:

เอาต์พุต - การจัดการข้อยกเว้นใน C ++ - Edureka

คำอธิบาย

โปรแกรมนี้แสดงให้เห็นถึงการจัดการข้อยกเว้น เรามีตัวแปร x ซึ่งกำหนดค่าเป็น 1 จากนั้นเรามีจุดเริ่มต้นของบล็อกลอง ในบล็อกนี้เรามีคำสั่ง if พร้อมเงื่อนไข x<10.

ในกรณีของเราเงื่อนไขเป็นจริงเนื่องจาก x เป็นหนึ่ง จากนั้นโปรแกรมจะแสดงข้อยกเว้นและตัวควบคุมจะเลื่อนไปจับบล็อก เราดำเนินการตามเงื่อนไขในส่วนที่จับได้และออกจากบล็อก

จับ (... ) {ต้นทุน<< 'Default Exceptionn'<

สุดท้ายเราดำเนินการคำสั่งที่เหลือหลังจากบล็อกจับและออกจากโปรแกรม

สามารถมีคำสั่ง catch ได้หลายแบบ ขึ้นอยู่กับจำนวนข้อยกเว้นที่เป็นไปได้

ดำเนินการต่อด้วยบทความการจัดการข้อยกเว้นใน C ++

จับบล็อกล้มเหลว

พิจารณาโปรแกรมก่อนหน้านี้หากแทน x คำหลัก throw จะพ่น“ ABC” ฟังก์ชัน catch จะไม่สามารถจัดการได้ มันจะแสดงข้อผิดพลาด

การใช้ลำดับความสำคัญคิวใน java

เราสามารถให้ข้อความแสดงข้อผิดพลาดที่ชนะของเราปรากฏขึ้นในกรณีดังกล่าว

ในการแก้ปัญหานี้เราต้องเพิ่มฟังก์ชัน catch เริ่มต้นให้กับโค้ดเพื่อจัดการปัญหาดังกล่าว

#include โดยใช้ namespace std int main () {int x = 1 try {cout<< 'Try Block: '<

เอาท์พุท:

คำอธิบาย:

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

หากไม่มีคำสั่ง catch ใดที่ตรงกันการจับเริ่มต้นจะถูกเรียกใช้งาน

การถดถอยโลจิสติกในตัวอย่าง python

หลาย Catch Blocks

บล็อกการลองครั้งเดียวอาจมีหลายบล็อก

นี่คือตัวอย่าง

#include โดยใช้ namespace std int test (int a) {try {if (a<0) throw a else throw 'a' }catch(int a){ cout<<'Caught an integer: ' << a<

เอาท์พุต:

คำอธิบาย:

ในโค้ดด้านบนเราใช้คำสั่ง catch หลาย ๆ เรามีการทดสอบฟังก์ชันซึ่งสร้างข้อยกเว้น ในกรณีทดสอบแรกค่าคือ 10 เนื่องจาก 10 มีค่ามากกว่าศูนย์ 'a' อักขระจะถูกโยนและถูกจับโดยฟังก์ชันการจับครั้งที่สอง

ในกรณีที่สองค่าจะน้อยกว่า 0 ดังนั้นค่า -1 จึงถูกโยนและถูกจับโดยข้อยกเว้นจำนวนเต็ม

การจัดการข้อยกเว้นในคลาสพื้นฐานและคลาสที่ได้รับ:

หากจับข้อยกเว้นของฐานและคลาสที่ได้รับมาจะต้องดำเนินการจับของคลาสที่ได้รับก่อนคลาสฐาน

นี่คือข้อยกเว้นบางประการ:

  • std :: ข้อยกเว้น

  • logic_error

  • การทำงานผิดพลาด

  • bad_alloc

  • bad_cast

  • bad_exception

ด้วยเหตุนี้เราจึงมาถึงจุดสิ้นสุดของบล็อกนี้ใน 'การจัดการข้อยกเว้นใน C ++' ฉันหวังว่าคุณจะพบข้อมูลนี้และเป็นประโยชน์โปรดติดตามบทช่วยสอนเพิ่มเติมในหัวข้อที่คล้ายกันนอกจากนี้คุณยังสามารถชำระเงินโปรแกรมการฝึกอบรมของเราได้o รับความรู้เชิงลึกเกี่ยวกับ jQuery พร้อมกับแอพพลิเคชั่นต่างๆที่คุณทำได้ สำหรับการฝึกอบรมออนไลน์สดพร้อมการสนับสนุนตลอด 24 ชั่วโมงทุกวันและการเข้าถึงตลอดชีวิต

มีคำถามสำหรับเรา? พูดถึงพวกเขาในส่วนความคิดเห็นของบล็อกนี้แล้วเราจะติดต่อกลับไป