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
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.H
tanı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 int
bir 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 /clr
oluş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 LONG
bir 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.H
tanı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::generic
kodlanmış 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"