ฉันตระหนักถึงหลายเกมที่เขียนด้วย C ++ แต่ไม่ได้ใช้ข้อยกเว้น เนื่องจากการจัดการกับความล้มเหลวในการจัดสรรหน่วยความจำใน C ++ นั้นโดยทั่วไปถูกสร้างขึ้นโดยมีstd::bad_alloc
ข้อยกเว้นเกมเหล่านี้จะจัดการกับความล้มเหลวได้อย่างไร?
พวกเขาเพียงแค่ผิดพลาดหรือมีวิธีการจัดการและกู้คืนจากข้อผิดพลาดออกจำ?
std::terminate
และนั่นคือมัน แต่ภายใต้ข้อ จำกัด เดียวกันการจัดสรรสามารถส่งคืนพอยน์เตอร์พอยน์เตอร์แทนการโยนข้อยกเว้นและผลลัพธ์นั้นสามารถตรวจสอบและจัดการแยกกันได้
ClassName variableName = new(nothrow) ClassName();
( แทนที่ชื่อคลาสชื่อตัวแปร ฯลฯ ) จากนั้นหากการจัดสรรล้มเหลวคุณสามารถตรวจสอบได้โดยบอกว่าif(!variableName)
อนุญาตให้จัดการข้อผิดพลาดได้โดยไม่ต้องใช้บล็อกข้อยกเว้น try-catch ในทำนองเดียวกันหากหน่วยความจำถูกจัดสรรโดยใช้ฟังก์ชั่นเช่นmalloc()
, calloc()
ฯลฯ จะสามารถตรวจพบความล้มเหลวในการจัดสรรโดยใช้if(!variableName)
วิธีการเดียวกันโดยไม่ต้องลองจับ สำหรับวิธีที่เกมจัดการกับข้อผิดพลาดเหล่านี้ในจุดนั้นมันขึ้นอยู่กับเกมที่จะตัดสินใจว่ามันจะล้มเหลวหรือไม่