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
1033 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!

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