std :: abort และ std :: exit (และอื่น ๆ : std :: _ exit, std :: quick_exit) เป็นเพียงฟังก์ชันระดับล่าง คุณใช้มันเพื่อบอกโปรแกรมว่าคุณต้องการให้มันทำอะไรกันแน่: ตัวทำลายอะไร (และถ้า) เรียกใช้ฟังก์ชันล้างข้อมูลอื่น ๆ ที่จะเรียกใช้ค่าอะไรที่จะส่งคืนเป็นต้น
std :: terminate เป็นสิ่งที่เป็นนามธรรมในระดับที่สูงกว่า: มันถูกเรียก (โดยรันไทม์หรือคุณ) เพื่อระบุว่ามีข้อผิดพลาดเกิดขึ้นในโปรแกรมและด้วยเหตุผลบางประการจึงไม่สามารถจัดการได้โดยการทิ้งข้อยกเว้น ความจำเป็นที่มักเกิดขึ้นเมื่อมีข้อผิดพลาดเกิดขึ้นในกลไกข้อยกเว้น แต่คุณสามารถใช้เมื่อใดก็ได้เมื่อคุณไม่ต้องการให้โปรแกรมของคุณดำเนินการต่อนอกเหนือจากข้อผิดพลาดที่กำหนด ฉันรวบรวมรายการสถานการณ์ทั้งหมดเมื่อ std :: terminate ถูกเรียกในโพสต์ของฉัน. ไม่ได้ระบุว่า std :: terminate ทำอะไรเพราะคุณเป็นผู้ควบคุมมัน คุณสามารถกำหนดค่าลักษณะการทำงานได้โดยการลงทะเบียนฟังก์ชันใด ๆ ข้อ จำกัด ที่คุณมีคือฟังก์ชันไม่สามารถย้อนกลับไปยังไซต์ข้อผิดพลาดและไม่สามารถออกจากข้อยกเว้นได้ แต่ในทางเทคนิคคุณสามารถเริ่มปั๊มข้อความของคุณภายในได้ สำหรับรายชื่อของสิ่งที่มีประโยชน์ที่คุณสามารถทำได้ภายในดูโพสต์อื่น ๆ ของฉัน
โดยเฉพาะอย่างยิ่งโปรดทราบว่า std :: terminate ถือเป็นตัวจัดการข้อยกเว้นในบริบทที่ std :: terminate ถูกเรียกใช้เนื่องจากมีข้อยกเว้นที่ไม่สามารถจัดการได้และคุณสามารถตรวจสอบว่าข้อยกเว้นคืออะไรและตรวจสอบได้โดยใช้ C ++ 11 โดยใช้ std :: rethrow_exception และ std :: current_exception มันเป็นทั้งหมดในการโพสต์ของฉัน