Terkadang Anda perlu menulis konstruktor yang bisa gagal. Sebagai contoh, katakan saya ingin instantiate objek dengan path file, sesuatu seperti
obj = new Object("/home/user/foo_file")
Selama jalur menunjuk ke file yang sesuai, semuanya baik-baik saja. Tetapi jika string bukan jalur yang valid, hal-hal yang harus dipatahkan. Tapi bagaimana caranya?
Anda bisa:
- lempar pengecualian
- return null object (jika bahasa pemrograman Anda memungkinkan konstruktor untuk mengembalikan nilai)
- mengembalikan objek yang valid tetapi dengan bendera yang menunjukkan bahwa jalurnya tidak diset dengan benar (ugh)
- orang lain?
Saya berasumsi bahwa "praktik terbaik" dari berbagai bahasa pemrograman akan menerapkan ini secara berbeda. Misalnya saya pikir ObjC lebih suka (2). Tetapi (2) tidak mungkin diimplementasikan dalam C ++ di mana konstruktor harus membatalkan sebagai tipe kembali. Dalam hal ini saya menganggap bahwa (1) digunakan.
Dalam bahasa pemrograman pilihan Anda, dapatkah Anda menunjukkan bagaimana Anda akan menangani masalah ini dan menjelaskan mengapa?
void
- mereka mengembalikan objek.
new
panggilan operator new
untuk mengalokasikan memori, maka konstruktor untuk mengisinya. Konstruktor tidak mengembalikan apa pun, dan new
mengembalikan pointer yang didapatnya operator new
. Apakah "tidak mengembalikan apa-apa" menyiratkan "pengembalian void
" adalah untuk diperebutkan.