Bagikan melalui


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

CObject

CException

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 AfxThrowFileExceptionglobal .

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

CException Kelas
Bagan Hierarki
Pemrosesan Pengecualian