Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mendapatkan Mesej Ralat Apabila `ifstream` Gagal Membuka Fail?

Bagaimanakah Saya Boleh Mendapatkan Mesej Ralat Apabila `ifstream` Gagal Membuka Fail?

Barbara Streisand
Lepaskan: 2024-12-25 09:02:10
asal
902 orang telah melayarinya

How Can I Retrieve the Error Message When an `ifstream` Fails to Open a File?

Mengatasi Kegagalan Terbuka ifstream: Dapatkan Mesej Ralat

Mengakses mesej ralat dalam C semasa membuka fail menggunakan ifstream boleh menjadi mencabar. Untuk menangani isu ini, mari kita mendalami teknik untuk mengekstrak sebab ralat.

Cara standard untuk menyemak ralat pembukaan fail ialah:

ifstream f;
f.open(fileName);

if ( f.fail() )
{
    // I need error message here, like "File not found" etc. -
    // the reason of the failure
}
Salin selepas log masuk

Menggunakan errno untuk Mesej Ralat

Dalam C , apabila panggilan sistem gagal, ia mengemas kini pembolehubah global errno. Oleh itu, anda boleh mendapatkan butiran tambahan tentang kegagalan terbuka ifstream menggunakan errno:

ifstream f;
f.open(fileName);

if ( f.fail() )
{
    cerr << "Error: " << strerror(errno);
}
Salin selepas log masuk

Pertimbangan Keselamatan Benang

Perhatikan bahawa errno ialah pembolehubah global. Dalam aplikasi berbilang benang, anda perlu berhati-hati. Jika panggilan sistem lain mencetuskan ralat antara pelaksanaan f.open() dan penggunaan errno, ini boleh menjejaskan ketepatan mesej ralat.

Sistem Standard POSIX

Pada POSIX- sistem yang mematuhi, errno adalah thread-local. Ini menunjukkan bahawa menetapkan errno dalam satu urutan tidak memberi kesan kepada nilainya dalam mana-mana urutan lain.

Fungsi e.what() Bergantung Pelaksanaan

Pada asalnya, e.what() kelihatan seperti lebih C -pendekatan yang sesuai untuk mendapatkan semula maklumat ralat. Walau bagaimanapun, fungsi ini mengembalikan rentetan khusus pelaksanaan. Dalam libstdc G , rentetan ini sering memberikan sedikit maklumat bermakna tentang kegagalan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Mesej Ralat Apabila `ifstream` Gagal Membuka Fail?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan