Pengendalian Ralat dalam Operasi Buka Ifstream
Semasa cuba membuka fail menggunakan ifstream, selalunya perlu untuk menangani kemungkinan ralat. Apabila operasi terbuka gagal, objek ifstream memasuki keadaan gagal. Walau bagaimanapun, secara lalai, ia tidak memberikan mesej ralat deskriptif, menjadikannya mencabar untuk menentukan punca kegagalan.
Mendapatkan Mesej Ralat
Untuk mengatasi had ini, kita boleh memanfaatkan panggilan sistem yang mengemas kini nilai errno global apabila ia menghadapi ralat. Nilai ini menyimpan kod ralat yang dikaitkan dengan kegagalan panggilan sistem terkini. Dengan mengakses errno dalam blok if (f.fail()), adalah mungkin untuk mendapatkan semula kod ralat dan memetakannya kepada mesej ralat yang sepadan.
Menggunakan fungsi strerror(), kita boleh menukar kod ralat ke dalam mesej ralat yang boleh dibaca manusia:
cerr << "Error: " << strerror(errno);
Pembacaan berbilang Pertimbangan
Adalah penting untuk ambil perhatian bahawa errno ialah pembolehubah global dan dalam aplikasi berbilang benang, panggilan sistem yang dilaksanakan oleh urutan berbeza mungkin menjejaskan nilainya. Walau bagaimanapun, pada sistem yang mematuhi piawai POSIX, errno adalah thread-local, bermakna perubahan yang dibuat oleh satu thread tidak akan memberi kesan kepada nilainya dalam thread lain.
Kaedah Alternatif (Bergantung Perlaksanaan)
Satu lagi cara yang berpotensi untuk mendapatkan mesej ralat adalah melalui kaedah e.what() objek ifstream. Walau bagaimanapun, perlu dipertimbangkan bahawa rentetan yang dikembalikan oleh kaedah ini adalah bergantung kepada pelaksanaan dan mungkin tidak selalu memberikan maklumat yang berguna dalam semua kes.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapat Mesej Ralat Deskriptif Apabila Membuka Fail dengan ifstream?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!