Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.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"