Rumah > pembangunan bahagian belakang > C++ > Bagaimana Saya Boleh Mendapat Mesej Ralat daripada Gagal `ifstream` Dibuka?

Bagaimana Saya Boleh Mendapat Mesej Ralat daripada Gagal `ifstream` Dibuka?

Patricia Arquette
Lepaskan: 2024-11-28 15:15:17
asal
741 orang telah melayarinya

How Can I Get Error Messages from Failed `ifstream` Opens?

Cara Mengambil Mesej Ralat daripada Pembukaan ifstream yang Gagal

Apabila cuba membuka fail menggunakan ifstream dan ia gagal, selalunya wajar untuk mendapatkan semula sebab di sebalik kegagalan. Begini cara untuk melakukannya:

Menggunakan errno dan strerror

Setiap panggilan sistem yang gagal mengemas kini nilai errno global. Nilai ini boleh digunakan untuk mendapatkan maklumat lanjut tentang ralat:

ifstream f;
f.open(fileName);

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

Perhatikan bahawa strerror menyediakan mesej ralat sebagai rentetan.

Pertimbangan untuk Aplikasi Berbilang Thread

Jika menggunakan kaedah ini dalam aplikasi berbilang benang, adalah penting untuk mempertimbangkan kemungkinan panggilan sistem lain mengubah suai errno antara f.open dan errno retrieval.

Perbezaan Sistem Pengendalian

Pada sistem POSIX, errno ialah thread-local, bermakna perubahan yang dibuat padanya dalam satu thread tidak menjejaskan thread lain. Ini tidak semestinya berlaku pada semua sistem.

Mengelakkan Penggunaan what()

Pada mulanya, ia mungkin kelihatan seperti e.what() adalah pendekatan yang lebih baik, kerana ia lebih idiomatik dalam C . Walau bagaimanapun, rentetan yang dikembalikan oleh fungsi ini adalah khusus pelaksanaan dan mungkin tidak selalu memberikan maklumat berguna tentang kegagalan.

Atas ialah kandungan terperinci Bagaimana Saya Boleh Mendapat Mesej Ralat daripada Gagal `ifstream` Dibuka?. 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