บางครั้งคุณต้องเขียนนวกรรมิกซึ่งอาจล้มเหลว เช่นสมมติว่าฉันต้องการยกตัวอย่างวัตถุที่มีเส้นทางไฟล์สิ่งที่ต้องการ
obj = new Object("/home/user/foo_file")
ตราบใดที่พา ธ ชี้ไปยังไฟล์ที่เหมาะสมทุกอย่างก็เรียบร้อย แต่ถ้าสตริงไม่ใช่เส้นทางที่ถูกต้องสิ่งที่ควรทำลาย แต่อย่างไร
คุณสามารถ:
- โยนข้อยกเว้น
- คืนค่า null object (หากภาษาการเขียนโปรแกรมของคุณอนุญาตให้ constructors ส่งคืนค่า)
- ส่งคืนวัตถุที่ถูกต้อง แต่มีธงระบุว่าเส้นทางของมันไม่ได้ตั้งอย่างถูกต้อง (ugh)
- คนอื่น ๆ ?
ฉันคิดว่า "แนวปฏิบัติที่ดีที่สุด" ของภาษาการเขียนโปรแกรมต่างๆจะใช้สิ่งนี้แตกต่างกัน เช่นฉันคิดว่า ObjC ชอบ (2) แต่จะไม่สามารถนำไปใช้ใน C ++ ได้ซึ่งตัวสร้างจะต้องมีค่าเป็นโมฆะเป็นชนิดส่งคืน ในกรณีนี้ฉันใช้ (1) ใช้
ในภาษาการเขียนโปรแกรมที่คุณเลือกคุณสามารถแสดงวิธีจัดการกับปัญหานี้และอธิบายว่าทำไม
void
- ส่งคืนอ็อบเจ็ก
new
เรียกoperator new
การจัดสรรหน่วยความจำจากนั้นตัวสร้างเพื่อเติมเต็ม ตัวสร้างไม่กลับอะไรและกลับชี้ที่ได้รับจากnew
operator new
ไม่ว่าจะ "ไม่คืนสิ่งใดก็ตาม" หมายถึง "การคืนสินค้าvoid
" นั้นมีไว้สำหรับคว้า