Clase CFileException
Representa una condición de excepción relacionada con archivo.
Sintaxis
class CFileException : public CException
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
CFileException::CFileException |
Construye un objeto CFileException . |
Métodos públicos
Nombre | Descripción |
---|---|
CFileException::ErrnoToException |
Devuelve el código de causa correspondiente a un número de error en tiempo de ejecución. |
CFileException::GetErrorMessage |
Recupera el mensaje que describe una excepción. |
CFileException::OsErrorToException |
Devuelve un código de causa correspondiente a un código de error del sistema operativo. |
CFileException::ThrowErrno |
Produce una excepción de archivo basada en un número de error en tiempo de ejecución. |
CFileException::ThrowOsError |
Produce una excepción de archivo basada en un número de error del sistema operativo. |
Miembros de datos públicos
Nombre | Descripción |
---|---|
CFileException::m_cause |
Contiene código portátil correspondiente a la causa de la excepción. |
CFileException::m_lOsError |
Contiene el número de error del sistema operativo relacionado. |
CFileException::m_strFileName |
Contiene el nombre del archivo para esta excepción. |
Comentarios
La clase CFileException
incluye miembros de datos públicos que contienen el código de causa portátil y el número de error específico del sistema operativo. La clase también proporciona funciones miembro estáticas para iniciar excepciones de archivo y para devolver códigos de causa para errores del sistema operativo y errores en tiempo de ejecución de C.
CFileException
Los objetos se construyen e inician en CFile
funciones miembro y en funciones miembro de clases derivadas. Se puede acceder a estos objetos dentro del ámbito de una expresión CATCH
. Para la portabilidad, usa solo el código de causa para obtener el motivo de una excepción. Para obtener más información sobre las excepciones, consulta el artículo Manejar Excepciones(MFC).
Jerarquía de herencia
CFileException
Requisitos
Encabezado: afx.h
CFileException::CFileException
Construye un objeto CFileException
que almacena el código de causa y el código del sistema operativo en el objeto.
CFileException(
int cause = CFileException::none,
LONG lOsError = -1,
LPCTSTR lpszArchiveName = NULL);
Parámetros
cause
Una variable de tipo enumerado que indica el motivo de la excepción. Consulta CFileException::m_cause
para obtener una lista de posibles valores.
lOsError
Un motivo específico del sistema operativo para la excepción, si está disponible. El lOsError
parámetro proporciona más información de lo que cause
hace.
lpszArchiveName
Apunta a una cadena que contiene el nombre del objeto CFile
que provoca la excepción.
Comentarios
No utilices este constructor directamente; en su lugar, llama a la función global AfxThrowFileException
.
Nota:
La variable lOsError
solo se aplica a los objetos CFile
y CStdioFile
. La clase CMemFile
no controla este código de error.
CFileException::ErrnoToException
Convierte un valor de error de biblioteca en tiempo de ejecución determinado en un CFileException
valor de error enumerado.
static int PASCAL ErrnoToException(int nErrno);
Parámetros
nErrno
Código de error entero tal como se define en el archivo ERRNO.H
de inclusión en tiempo de ejecución.
Valor devuelto
Valor enumerado que corresponde a un valor de error de biblioteca en tiempo de ejecución determinado.
Comentarios
Consulta CFileException::m_cause
para obtener una lista de los posibles valores enumerados.
Ejemplo
ASSERT(CFileException::ErrnoToException(EACCES) ==
CFileException::accessDenied);
CFileException::GetErrorMessage
Recupera texto que describe una excepción.
virtual BOOL GetErrorMessage(
LPTSTR lpszError,
UINT nMaxError,
PUINT pnHelpContext = NULL) const;
Parámetros
lpszError
[in, out] Puntero que apunta a un búfer que recibe un mensaje de error.
nMaxError
[in] El número máximo de caracteres que puede contener la estructura. Esto incluye el carácter NULL
de terminación.
pnHelpContext
[in, out] Puntero a un entero sin signo que recibe el identificador de contexto de ayuda. Si NULL
, no se devuelve ningún identificador.
Valor devuelto
si el método es correcto; TRUE
, en caso contrario, FALSE
.
Comentarios
Si el búfer especificado es demasiado pequeño, se trunca el mensaje de error.
Ejemplo
En el ejemplo siguiente se utiliza 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
Contiene los valores definidos por un tipo enumerado CFileException
.
int m_cause;
Comentarios
Este miembro de datos es una variable pública de tipo int
. A continuación se indican los enumeradores y el significado de cada uno de ellos:
Error | Valor y significado |
---|---|
CFileException::none |
0: No se produjo ningún error. |
CFileException::genericException |
1: Error no especificado. |
CFileException::fileNotFound |
2: No se pudo encontrar el archivo. |
CFileException::badPath |
3: Todo o parte de la ruta de acceso no es válido. |
CFileException::tooManyOpenFiles |
4: Se superó el número permitido de archivos abiertos. |
CFileException::accessDenied |
5: No se pudo acceder al archivo. |
CFileException::invalidFile |
6: Se intentó usar un identificador de archivo no válido. |
CFileException::removeCurrentDir |
7: No se puede quitar el directorio de trabajo actual. |
CFileException::directoryFull |
8: No hay más entradas de directorio. |
CFileException::badSeek |
9: Error al intentar establecer el puntero de archivo. |
CFileException::hardIO |
10: Error de hardware. |
CFileException::sharingViolation |
11: SHARE.EXE no se cargó o se bloqueó una región compartida. |
CFileException::lockViolation |
12: Se intentó bloquear una región que ya estaba bloqueada. |
CFileException::diskFull |
13: El disco está completo. |
CFileException::endOfFile |
14: se alcanzó el final del fichero. |
Nota:
Estos enumeradores de causa de CFileException
son distintos de los enumeradores de causa de CArchiveException
.
Nota:
CArchiveException::generic
está en desuso. Use genericException
en su lugar. Si generic
se usa en una aplicación y se crea con /clr
, los errores de sintaxis resultantes no serán fáciles de descifrar.
Ejemplo
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
Contiene el código de error del sistema operativo para esta excepción.
LONG m_lOsError;
Comentarios
Consulte el manual técnico de su sistema operativo para obtener una lista de códigos de error. Este miembro de datos es una variable pública de tipo LONG
.
CFileException::m_strFileName
Contiene el nombre del archivo para esta condición de excepción.
CString m_strFileName;
CFileException::OsErrorToException
Devuelve un enumerador que corresponde a un valor determinado lOsError
. Si el código de error es desconocido, la función devuelve CFileException::generic
.
static int PASCAL OsErrorToException(LONG lOsError);
Parámetros
lOsError
Código de error específico del sistema operativo.
Valor devuelto
Valor enumerado que corresponde a un valor de error del sistema operativo determinado.
Ejemplo
ASSERT(CFileException::OsErrorToException(ERROR_ACCESS_DENIED) ==
CFileException::accessDenied);
CFileException::ThrowErrno
Construye un objeto CFileException
correspondiente a un valor determinado nErrno
y, a continuación, produce la excepción.
static void PASCAL ThrowErrno(int nErrno, LPCTSTR lpszFileName = NULL);
Parámetros
nErrno
Código de error entero tal como se define en el archivo ERRNO.H
de inclusión en tiempo de ejecución.
lpszFileName
Un puntero a una cadena que contiene el nombre del archivo que provocó la excepción (si está disponible).
Ejemplo
CFileException::ThrowErrno(EACCES); // "access denied"
CFileException::ThrowOsError
Produce un CFileException
objeto correspondiente a un valor determinado lOsError
. Si el código de error es desconocido, la función genera una excepción codificada como CFileException::generic
.
static void PASCAL ThrowOsError(LONG lOsError, LPCTSTR lpszFileName = NULL);
Parámetros
lOsError
Código de error específico del sistema operativo.
lpszFileName
Un puntero a una cadena que contiene el nombre del archivo que provocó la excepción (si está disponible).
Ejemplo
CFileException::ThrowOsError(ERROR_ACCESS_DENIED); // "access denied"
Vea también
CException
(clase)
Gráfico de jerarquías
Procesamiento de excepciones