Saya memiliki kelas foo
(yang tidak dapat saya modifikasi) hanya dengan satu konstruktor yang mengambil satu argumen seperti ini:
foo bar("Hello!");
Karena konstruktor dapat menimbulkan kesalahan, saya ingin menerapkan penanganan kesalahan. Upaya pertama saya adalah ini:
try {
foo bar("Hello!");
}
catch {
cerr << "Something went horribly wrong...";
return -1;
}
Namun, sekarang foo
berada dalam lingkup blok try
dan tidak dapat digunakan di tempat lain. Jika saya memahami semuanya dengan benar, saya tidak dapat mendeklarasikan suatu objek tanpa menginisialisasinya, jadi saya dapat mendeklarasikan bar
di luar blok try
. Jadi apa yang harus saya lakukan untuk menangkap kesalahan yang dilontarkan konstruktor?
EDIT: Untuk memperjelas, ini ada di main
saya, dan di catch
saya akan membatalkan program. Selain itu, argumennya adalah file yang akan dibuka, jadi tidak ada input aman yang diketahui yang tidak akan pernah memunculkan pengecualian.
main()
, bukan? Jadi mengapa tidak memasukkannya ke dalam fungsi lain yang Anda masukkan ke dalam blok coba? - person juanchopanza   schedule 10.09.2015bar
dan gagal dibuat, Anda memiliki sedikit masalah. - person MSalters   schedule 10.09.2015