Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.
Representa uma condição de exceção relacionada com ficheiros.
Sintaxe
class CFileException : public CException
Membros
Construtores Públicos
| Nome | Description |
|---|---|
CFileException::CFileException |
Constrói um CFileException objeto. |
Métodos Públicos
| Nome | Description |
|---|---|
CFileException::ErrnoToException |
Devolve o código de causa correspondente a um número de erro em tempo de execução. |
CFileException::GetErrorMessage |
Recupera a mensagem que descreve uma exceção. |
CFileException::OsErrorToException |
Devolve um código de causa correspondente a um código de erro do sistema operativo. |
CFileException::ThrowErrno |
Lança uma exceção de ficheiro baseada num número de erro em tempo de execução. |
CFileException::ThrowOsError |
Lança uma exceção de ficheiro baseada num número de erro do sistema operativo. |
Membros de Dados Públicos
| Nome | Description |
|---|---|
CFileException::m_cause |
Contém código portátil correspondente à causa da exceção. |
CFileException::m_lOsError |
Contém o número de erro do sistema operativo relacionado. |
CFileException::m_strFileName |
Contém o nome do ficheiro desta exceção. |
Observações
A CFileException classe inclui membros de dados públicos que detêm o código de causa portátil e o número de erro específico do sistema operativo. A classe também fornece funções estáticas para lançar exceções de ficheiros e para devolver códigos de causa tanto para erros do sistema operativo como para erros em tempo de execução C.
CFileException os objetos são construídos e colocados em CFile funções membros e em funções membros de classes derivadas. Pode aceder a estes objetos dentro do âmbito de uma CATCH expressão. Para portabilidade, use apenas o código de causa para obter o motivo de uma exceção. Para mais informações sobre exceções, consulte o artigo Tratamento de Exceções (MFC).
Hierarquia de herança
CFileException
Requerimentos
Cabeçalho:afx.h
CFileException::CFileException
Constrói um CFileException objeto que armazena o código de causa e o código do sistema operativo no objeto.
CFileException(
int cause = CFileException::none,
LONG lOsError = -1,
LPCTSTR lpszArchiveName = NULL);
Parâmetros
cause
Uma variável de tipo enumerada que indica a razão da exceção. Consulte CFileException::m_cause uma lista dos valores possíveis.
lOsError
Uma razão específica do sistema operativo para a exceção, se disponível. O lOsError parâmetro fornece mais informação do que cause realmente fornece.
lpszArchiveName
Aponta para uma cadeia que contém o nome do CFile objeto que causa a exceção.
Observações
Não use este construtor diretamente, mas sim chame à função AfxThrowFileExceptionglobal .
Observação
A variável lOsError aplica-se apenas a CFile e CStdioFile objetos. A CMemFile classe não gere este código de erro.
CFileException::ErrnoToException
Converte um dado valor de erro da biblioteca em tempo de execução num CFileException valor de erro enumerado.
static int PASCAL ErrnoToException(int nErrno);
Parâmetros
nErrno
Um código de erro inteiro definido no ficheiro ERRNO.Hinclude em tempo de execução .
Valor de retorno
Valor enumerado que corresponde a um dado valor de erro de biblioteca em tempo de execução.
Observações
Veja CFileException::m_cause uma lista dos possíveis valores enumerados.
Example
ASSERT(CFileException::ErrnoToException(EACCES) ==
CFileException::accessDenied);
CFileException::GetErrorMessage
Recupera texto que descreve uma exceção.
virtual BOOL GetErrorMessage(
LPTSTR lpszError,
UINT nMaxError,
PUINT pnHelpContext = NULL) const;
Parâmetros
lpszError
[inspira, expira] Apontar para um buffer que recebe uma mensagem de erro.
nMaxError
[dentro] O número máximo de caracteres que o buffer especificado pode conter. Isto inclui o carácter de NULL terminação.
pnHelpContext
[inspira, expira] Apontador para um inteiro sem sinal que recebe o ID do contexto de ajuda. Se NULL, não é devolvido nenhum documento de identificação.
Valor de retorno
TRUE se o método fosse bem-sucedido; caso contrário FALSE.
Observações
Se o buffer especificado for demasiado pequeno, a mensagem de erro é truncada.
Example
O exemplo a seguir usa 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
Contém valores definidos por um CFileException tipo enumerado.
int m_cause;
Observações
Este membro de dados é uma variável pública do tipo int. Os enumeradores e os seus significados são os seguintes:
| Erro | Valor e significado |
|---|---|
CFileException::none |
0: Não houve erro. |
CFileException::genericException |
1: Ocorreu um erro não especificado. |
CFileException::fileNotFound |
2: O ficheiro não foi localizado. |
CFileException::badPath |
3: Todo ou parte do caminho é inválido. |
CFileException::tooManyOpenFiles |
4: O número permitido de ficheiros abertos foi ultrapassado. |
CFileException::accessDenied |
5: O ficheiro não pôde ser acedido. |
CFileException::invalidFile |
6: Houve uma tentativa de usar um endereço de ficheiro inválido. |
CFileException::removeCurrentDir |
7: O diretório de trabalho atual não pode ser removido. |
CFileException::directoryFull |
8: Não há mais entradas no diretório. |
CFileException::badSeek |
9: Houve um erro ao tentar definir o ponteiro do ficheiro. |
CFileException::hardIO |
10: Houve um erro de hardware. |
CFileException::sharingViolation |
11: SHARE.EXE não estava carregado, ou uma região partilhada estava bloqueada. |
CFileException::lockViolation |
12: Houve uma tentativa de bloquear uma região que já estava bloqueada. |
CFileException::diskFull |
13: O disco está cheio. |
CFileException::endOfFile |
14: O fim do processo foi alcançado. |
Observação
Estes CFileException enumeradores de causa são distintos dos CArchiveException enumeradores de causas.
Observação
CArchiveException::generic está obsoleto. Utilize genericException em substituição. Se generic for usado numa aplicação e construído com /clr, os erros de sintaxe resultantes não são fáceis de decifrar.
Example
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
Contém o código de erro do sistema operativo para esta exceção.
LONG m_lOsError;
Observações
Consulte o manual técnico do seu sistema operativo para uma lista de códigos de erro. Este membro de dados é uma variável pública do tipo LONG.
CFileException::m_strFileName
Contém o nome do ficheiro para esta condição de exceção.
CString m_strFileName;
CFileException::OsErrorToException
Devolve um enumerador que corresponde a um determinado lOsError valor. Se o código de erro for desconhecido, então a função devolve CFileException::generic.
static int PASCAL OsErrorToException(LONG lOsError);
Parâmetros
lOsError
Um código de erro específico do sistema operativo.
Valor de retorno
Valor enumerado que corresponde a um dado valor de erro do sistema operativo.
Example
ASSERT(CFileException::OsErrorToException(ERROR_ACCESS_DENIED) ==
CFileException::accessDenied);
CFileException::ThrowErrno
Constrói um CFileException objeto correspondente a um determinado nErrno valor, depois lança a exceção.
static void PASCAL ThrowErrno(int nErrno, LPCTSTR lpszFileName = NULL);
Parâmetros
nErrno
Um código de erro inteiro definido no ficheiro ERRNO.Hinclude em tempo de execução .
lpszFileName
Um ponteiro para a string que contém o nome do ficheiro que causou a exceção, se disponível.
Example
CFileException::ThrowErrno(EACCES); // "access denied"
CFileException::ThrowOsError
Lança um CFileException correspondente a um dado lOsError valor. Se o código de erro for desconhecido, então a função gera uma exceção codificada como CFileException::generic.
static void PASCAL ThrowOsError(LONG lOsError, LPCTSTR lpszFileName = NULL);
Parâmetros
lOsError
Um código de erro específico do sistema operativo.
lpszFileName
Um ponteiro para a string que contém o nome do ficheiro que causou a exceção, se disponível.
Example
CFileException::ThrowOsError(ERROR_ACCESS_DENIED); // "access denied"
Consulte também
CException Classe
Gráfico de Hierarquia
Processamento de Exceções