CFileException
Kelas
Mewakili kondisi pengecualian terkait file.
Sintaks
class CFileException : public CException
Anggota
Konstruktor Publik
Nama | Deskripsi |
---|---|
CFileException::CFileException |
Membuat CFileException objek. |
Metode Publik
Nama | Deskripsi |
---|---|
CFileException::ErrnoToException |
Mengembalikan penyebab kode yang sesuai dengan nomor kesalahan run-time. |
CFileException::GetErrorMessage |
Mengambil pesan yang menjelaskan pengecualian. |
CFileException::OsErrorToException |
Mengembalikan kode penyebab yang sesuai dengan kode kesalahan sistem operasi. |
CFileException::ThrowErrno |
Melempar pengecualian file berdasarkan nomor kesalahan runtime. |
CFileException::ThrowOsError |
Melempar pengecualian file berdasarkan nomor kesalahan sistem operasi. |
Anggota Data Publik
Nama | Deskripsi |
---|---|
CFileException::m_cause |
Berisi kode portabel yang sesuai dengan penyebab pengecualian. |
CFileException::m_lOsError |
Berisi nomor kesalahan sistem operasi terkait. |
CFileException::m_strFileName |
Berisi nama file untuk pengecualian ini. |
Keterangan
Kelas ini CFileException
mencakup anggota data publik yang menyimpan kode penyebab portabel dan nomor kesalahan khusus sistem operasi. Kelas ini juga menyediakan fungsi anggota statis untuk melemparkan pengecualian file dan untuk mengembalikan kode penyebab untuk kesalahan sistem operasi dan kesalahan run-time C.
CFileException
objek dibangun dan dilemparkan dalam CFile
fungsi anggota dan dalam fungsi anggota kelas turunan. Anda dapat mengakses objek ini dalam cakupan CATCH
ekspresi. Untuk portabilitas, gunakan hanya kode penyebab untuk mendapatkan alasan pengecualian. Untuk informasi selengkapnya tentang pengecualian, lihat artikel Penanganan Pengecualian (MFC).
Hierarki Warisan
CFileException
Persyaratan
Header: afx.h
CFileException::CFileException
Membuat CFileException
objek yang menyimpan kode penyebab dan kode sistem operasi dalam objek.
CFileException(
int cause = CFileException::none,
LONG lOsError = -1,
LPCTSTR lpszArchiveName = NULL);
Parameter
cause
Variabel jenis enumerasi yang menunjukkan alasan pengecualian. Lihat CFileException::m_cause
untuk daftar nilai yang mungkin.
lOsError
Alasan khusus sistem operasi untuk pengecualian, jika tersedia. Parameter lOsError
menyediakan lebih banyak informasi daripada cause
yang dilakukan.
lpszArchiveName
Menunjuk ke string yang berisi nama objek yang CFile
menyebabkan pengecualian.
Keterangan
Jangan gunakan konstruktor ini secara langsung, melainkan panggil fungsi AfxThrowFileException
global .
Catatan
Variabel lOsError
hanya berlaku untuk CFile
objek dan CStdioFile
. Kelas CMemFile
tidak menangani kode kesalahan ini.
CFileException::ErrnoToException
Mengonversi nilai kesalahan pustaka run-time tertentu menjadi CFileException
nilai kesalahan enumerasi.
static int PASCAL ErrnoToException(int nErrno);
Parameter
nErrno
Kode kesalahan bilangan bulat seperti yang didefinisikan dalam run-time sertakan file ERRNO.H
.
Tampilkan Nilai
Nilai enumerasi yang sesuai dengan nilai kesalahan pustaka run-time tertentu.
Keterangan
Lihat CFileException::m_cause
untuk daftar kemungkinan nilai yang dijumlahkan.
Contoh
ASSERT(CFileException::ErrnoToException(EACCES) ==
CFileException::accessDenied);
CFileException::GetErrorMessage
Mengambil teks yang menjelaskan pengecualian.
virtual BOOL GetErrorMessage(
LPTSTR lpszError,
UINT nMaxError,
PUINT pnHelpContext = NULL) const;
Parameter
lpszError
[masuk, keluar] Penunjuk ke buffer yang menerima pesan kesalahan.
nMaxError
[di] Jumlah maksimum karakter yang dapat ditahan oleh buffer yang ditentukan. Ini termasuk karakter yang mengakhiri NULL
.
pnHelpContext
[masuk, keluar] Penunjuk ke bilangan bulat yang tidak ditandatangani yang menerima ID konteks bantuan. Jika NULL
, tidak ada ID yang dikembalikan.
Tampilkan Nilai
TRUE
jika metode berhasil; jika tidak FALSE
.
Keterangan
Jika buffer yang ditentukan terlalu kecil, pesan kesalahan dipotong.
Contoh
Contoh berikut menggunakan CFileException::GetErrorMessage
.
CFile fileInput;
CFileException ex;
// try to open a file for reading.
// The file will certainly not
// exist because there are too many explicit
// directories in the name.
// if the call to Open() fails, ex will be
// initialized with exception
// information. the call to ex.GetErrorMessage()
// will retrieve an appropriate message describing
// the error, and we'll add our own text
// to make sure the user is perfectly sure what
// went wrong.
if (!fileInput.Open(_T("\\Too\\Many\\Bad\\Dirs.DAT"), CFile::modeRead, &ex))
{
TCHAR szCause[255];
CString strFormatted;
ex.GetErrorMessage(szCause, 255);
// (in real life, it's probably more
// appropriate to read this from
// a string resource so it would be easy to
// localize)
strFormatted = _T("The data file could not be opened because of this error: ");
strFormatted += szCause;
AfxMessageBox(strFormatted);
}
else
{
// the file was opened, so do whatever work
// with fileInput
// we were planning...
fileInput.Close();
}
CFileException::m_cause
Berisi nilai yang ditentukan oleh jenis enumerasi CFileException
.
int m_cause;
Keterangan
Anggota data ini adalah variabel publik jenis int
. Enumerator dan maknanya adalah sebagai berikut:
Kesalahan | Nilai dan makna |
---|---|
CFileException::none |
0: Tidak ada kesalahan yang terjadi. |
CFileException::genericException |
1: Terjadi kesalahan yang tidak ditentukan. |
CFileException::fileNotFound |
2: File tidak dapat ditemukan. |
CFileException::badPath |
3: Semua atau sebagian jalur tidak valid. |
CFileException::tooManyOpenFiles |
4: Jumlah file terbuka yang diizinkan terlampaui. |
CFileException::accessDenied |
5: File tidak dapat diakses. |
CFileException::invalidFile |
6: Ada upaya untuk menggunakan handel file yang tidak valid. |
CFileException::removeCurrentDir |
7: Direktori kerja saat ini tidak dapat dihapus. |
CFileException::directoryFull |
8: Tidak ada lagi entri direktori. |
CFileException::badSeek |
9: Ada kesalahan saat mencoba mengatur penunjuk file. |
CFileException::hardIO |
10: Terjadi kesalahan perangkat keras. |
CFileException::sharingViolation |
11: SHARE.EXE tidak dimuat, atau wilayah bersama dikunci. |
CFileException::lockViolation |
12: Ada upaya untuk mengunci wilayah yang sudah dikunci. |
CFileException::diskFull |
13: Disk penuh. |
CFileException::endOfFile |
14: Akhir file tercapai. |
Catatan
Ini CFileException
menyebabkan enumerator berbeda dari enumerator penyebabnya CArchiveException
.
Catatan
CArchiveException::generic
tidak digunakan lagi. Gunakan genericException
sebagai gantinya. Jika generic
digunakan dalam aplikasi dan dibangun dengan /clr
, kesalahan sintaks yang dihasilkan tidak mudah didefinisikan.
Contoh
try
{
CFile f(_T("M_Cause_File.dat"), CFile::modeWrite);
}
catch(CFileException* e)
{
if( e->m_cause == CFileException::fileNotFound)
TRACE(_T("ERROR: File not found\n"));
e->Delete();
}
CFileException::m_lOsError
Berisi kode kesalahan sistem operasi untuk pengecualian ini.
LONG m_lOsError;
Keterangan
Lihat manual teknis sistem operasi Anda untuk daftar kode kesalahan. Anggota data ini adalah variabel publik jenis LONG
.
CFileException::m_strFileName
Berisi nama file untuk kondisi pengecualian ini.
CString m_strFileName;
CFileException::OsErrorToException
Mengembalikan enumerator yang sesuai dengan nilai tertentu lOsError
. Jika kode kesalahan tidak diketahui, maka fungsi mengembalikan CFileException::generic
.
static int PASCAL OsErrorToException(LONG lOsError);
Parameter
lOsError
Kode kesalahan khusus sistem operasi.
Tampilkan Nilai
Nilai enumerasi yang sesuai dengan nilai kesalahan sistem operasi tertentu.
Contoh
ASSERT(CFileException::OsErrorToException(ERROR_ACCESS_DENIED) ==
CFileException::accessDenied);
CFileException::ThrowErrno
Membuat objek yang CFileException
sesuai dengan nilai tertentu nErrno
, lalu melemparkan pengecualian.
static void PASCAL ThrowErrno(int nErrno, LPCTSTR lpszFileName = NULL);
Parameter
nErrno
Kode kesalahan bilangan bulat seperti yang didefinisikan dalam run-time sertakan file ERRNO.H
.
lpszFileName
Penunjuk ke string yang berisi nama file yang menyebabkan pengecualian, jika tersedia.
Contoh
CFileException::ThrowErrno(EACCES); // "access denied"
CFileException::ThrowOsError
Melemparkan yang CFileException
sesuai dengan nilai tertentu lOsError
. Jika kode kesalahan tidak diketahui, maka fungsi melemparkan pengecualian yang dikodekan sebagai CFileException::generic
.
static void PASCAL ThrowOsError(LONG lOsError, LPCTSTR lpszFileName = NULL);
Parameter
lOsError
Kode kesalahan khusus sistem operasi.
lpszFileName
Penunjuk ke string yang berisi nama file yang menyebabkan pengecualian, jika tersedia.
Contoh
CFileException::ThrowOsError(ERROR_ACCESS_DENIED); // "access denied"
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk