Aracılığıyla paylaş


CFileException Sınıf

Dosyayla ilgili özel durum koşulunu temsil eder.

Sözdizimi

class CFileException : public CException

Üyeler

Ortak Oluşturucular

Veri Akışı Adı Açıklama
CFileException::CFileException Bir CFileException nesne oluşturur.

Genel Yöntemler

Veri Akışı Adı Açıklama
CFileException::ErrnoToException Çalışma zamanı hata numarasına karşılık gelen neden kodunu döndürür.
CFileException::GetErrorMessage Özel durumu açıklayan iletiyi alır.
CFileException::OsErrorToException İşletim sistemi hata koduna karşılık gelen bir neden kodu döndürür.
CFileException::ThrowErrno Çalışma zamanı hata numarasını temel alan bir dosya özel durumu oluşturur.
CFileException::ThrowOsError İşletim sistemi hata numarasını temel alan bir dosya özel durumu oluşturur.

Ortak Veri Üyeleri

Veri Akışı Adı Açıklama
CFileException::m_cause Özel durum nedenine karşılık gelen taşınabilir kodu içerir.
CFileException::m_lOsError İlgili işletim sistemi hata numarasını içerir.
CFileException::m_strFileName Bu özel durum için dosyanın adını içerir.

Açıklamalar

sınıfı, CFileException taşınabilir neden kodunu ve işletim sistemine özgü hata numarasını tutan genel veri üyelerini içerir. sınıfı, dosya özel durumları oluşturma ve hem işletim sistemi hataları hem de C çalışma zamanı hataları için neden kodları döndürmek için statik üye işlevleri de sağlar.

CFileException nesneleri, türetilmiş sınıfların üye işlevlerinde CFile ve üye işlevlerinde oluşturulur ve oluşturulur. Bu nesnelere bir CATCH ifade kapsamında erişebilirsiniz. Taşınabilirlik için, özel durumun nedenini almak için yalnızca neden kodunu kullanın. Özel durumlar hakkında daha fazla bilgi için Özel Durum İşleme (MFC) makalesine bakın.

Devralma Hiyerarşisi

CObject

CException

CFileException

Gereksinimler

Üstbilgi: afx.h

CFileException::CFileException

Nesnede neden kodunu ve işletim sistemi kodunu depolayan bir CFileException nesne oluşturur.

CFileException(
    int cause = CFileException::none,
    LONG lOsError = -1,
    LPCTSTR lpszArchiveName = NULL);

Parametreler

cause
Özel durumun nedenini gösteren numaralandırılmış tür değişkeni. Olası değerlerin listesi için bkz CFileException::m_cause .

lOsError
Varsa, özel durum için işletim sistemine özgü bir neden. lOsError parametresi, sağladığından cause daha fazla bilgi sağlar.

lpszArchiveName
Özel duruma neden olan nesnenin adını içeren bir dizeyi CFile gösterir.

Açıklamalar

Bu oluşturucuyu doğrudan kullanmayın, genel işlevini AfxThrowFileExceptionçağırın.

Not

Değişkeni lOsError yalnızca ve CStdioFile nesnelerine CFile uygulanır. CMemFile sınıfı bu hata kodunu işlemez.

CFileException::ErrnoToException

Belirli bir çalışma zamanı kitaplığı hata değerini numaralandırılmış hata CFileException değerine dönüştürür.

static int PASCAL ErrnoToException(int nErrno);

Parametreler

nErrno
Çalışma zamanı ekleme dosyasında ERRNO.Htanımlandığı gibi bir tamsayı hata kodu.

Dönüş Değeri

Belirli bir çalışma zamanı kitaplığı hata değerine karşılık gelen numaralandırılmış değer.

Açıklamalar

Olası numaralandırılmış değerlerin listesi için bkz CFileException::m_cause .

Örnek

ASSERT(CFileException::ErrnoToException(EACCES) == 
   CFileException::accessDenied);

CFileException::GetErrorMessage

Özel durumu açıklayan metni alır.

virtual BOOL GetErrorMessage(
    LPTSTR lpszError,
    UINT nMaxError,
    PUINT pnHelpContext = NULL) const;

Parametreler

lpszError
[in, out] Hata iletisi alan arabelleğe yönelik işaretçi.

nMaxError
[in] Belirtilen arabelleğin tutabileceği karakter sayısı üst sınırı. Buna sonlandırıcı NULL karakter dahildir.

pnHelpContext
[in, out] Yardım bağlam kimliğini alan işaretsiz bir tamsayı işaretçisi. ise NULL, hiçbir kimlik döndürülür.

Dönüş Değeri

TRUE yöntemi başarılı olursa; aksi takdirde FALSE.

Açıklamalar

Belirtilen arabellek çok küçükse hata iletisi kesilir.

Örnek

Aşağıdaki örnekte kullanılır 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

Numaralandırılmış bir CFileException tür tarafından tanımlanan değerleri içerir.

int m_cause;

Açıklamalar

Bu veri üyesi türünde intbir ortak değişkendir. Numaralandırıcılar ve anlamları aşağıdaki gibidir:

Hata Değer ve anlam
CFileException::none 0: Hata oluştu.
CFileException::genericException 1: Belirtilmeyen bir hata oluştu.
CFileException::fileNotFound 2: Dosya bulunamadı.
CFileException::badPath 3: Yolun tamamı veya bir bölümü geçersiz.
CFileException::tooManyOpenFiles 4: İzin verilen açık dosya sayısı aşıldı.
CFileException::accessDenied 5: Dosyaya erişilemedi.
CFileException::invalidFile 6: Geçersiz bir dosya tanıtıcısı kullanılmaya çalışıldı.
CFileException::removeCurrentDir 7: Geçerli çalışma dizini kaldırılamaz.
CFileException::directoryFull 8: Başka dizin girdisi yok.
CFileException::badSeek 9: Dosya işaretçisi ayarlanmaya çalışılıyorken bir hata oluştu.
CFileException::hardIO 10: Donanım hatası oluştu.
CFileException::sharingViolation 11: SHARE.EXE yüklenmedi veya paylaşılan bir bölge kilitlendi.
CFileException::lockViolation 12: Zaten kilitli olan bir bölgeyi kilitleme girişimi yapıldı.
CFileException::diskFull 13: Disk dolu.
CFileException::endOfFile 14: Dosyanın sonuna ulaşıldı.

Not

Bu CFileException neden numaralandırıcıları, neden numaralandırıcılarından CArchiveException farklıdır.

Not

CArchiveException::generic kullanım dışı bırakıldı. Bunun yerine genericException kullanın. Bir uygulamada kullanılırsa ve ile /clroluşturulursageneric, sonuçta ortaya çıkan söz dizimi hatalarının deşifre edilmesi kolay değildir.

Örnek

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

Bu özel durum için işletim sistemi hata kodunu içerir.

LONG m_lOsError;

Açıklamalar

Hata kodlarının listesi için işletim sistemi teknik kılavuzunuza bakın. Bu veri üyesi türünde LONGbir ortak değişkendir.

CFileException::m_strFileName

Bu özel durum koşulu için dosyanın adını içerir.

CString m_strFileName;

CFileException::OsErrorToException

Belirli lOsError bir değere karşılık gelen bir numaralandırıcı döndürür. Hata kodu bilinmiyorsa işlevi döndürür CFileException::generic.

static int PASCAL OsErrorToException(LONG lOsError);

Parametreler

lOsError
İşletim sistemine özgü bir hata kodu.

Dönüş Değeri

Belirli bir işletim sistemi hata değerine karşılık gelen numaralandırılmış değer.

Örnek

ASSERT(CFileException::OsErrorToException(ERROR_ACCESS_DENIED) == 
   CFileException::accessDenied);

CFileException::ThrowErrno

Belirli nErrno bir CFileException değere karşılık gelen bir nesne oluşturur ve ardından özel durum oluşturur.

static void PASCAL ThrowErrno(int nErrno, LPCTSTR lpszFileName = NULL);

Parametreler

nErrno
Çalışma zamanı ekleme dosyasında ERRNO.Htanımlandığı gibi bir tamsayı hata kodu.

lpszFileName
Varsa, özel duruma neden olan dosyanın adını içeren dize işaretçisi.

Örnek

CFileException::ThrowErrno(EACCES);  // "access denied"

CFileException::ThrowOsError

Belirli lOsError bir CFileException değere karşılık gelen bir oluşturur. Hata kodu bilinmiyorsa işlev olarak CFileException::generickodlanmış bir özel durum oluşturur.

static void PASCAL ThrowOsError(LONG lOsError, LPCTSTR lpszFileName = NULL);

Parametreler

lOsError
İşletim sistemine özgü bir hata kodu.

lpszFileName
Varsa, özel duruma neden olan dosyanın adını içeren dize işaretçisi.

Örnek

CFileException::ThrowOsError(ERROR_ACCESS_DENIED);  // "access denied"         

Ayrıca bkz.

CException Sınıf
Hiyerarşi Grafiği
Özel Durum İşleme