Procesamiento de excepcionesException Processing

Cuando se ejecuta un programa, pueden producirse varias condiciones anómalas y errores denominados "excepciones".When a program executes, a number of abnormal conditions and errors called "exceptions" can occur. Estos pueden incluir la falta de memoria, errores de asignación de recursos y errores de búsqueda de archivos.These may include running out of memory, resource allocation errors, and failure to find files.

En el biblioteca MFC se usa un esquema de control de excepciones que se modela estrechamente después del propuesto por el Comité de estándares ANSI para C++.The Microsoft Foundation Class Library uses an exception-handling scheme that is modeled closely after the one proposed by the ANSI standards committee for C++. Se debe configurar un controlador de excepciones antes de llamar a una función que pueda encontrar una situación anómala.An exception handler must be set up before calling a function that may encounter an abnormal situation. Si la función encuentra una condición anómala, produce una excepción y el control se pasa al controlador de excepciones.If the function encounters an abnormal condition, it throws an exception and control is passed to the exception handler.

Varias macros incluidas con la biblioteca MFC configurarán los controladores de excepciones.Several macros included with the Microsoft Foundation Class Library will set up exception handlers. Una serie de otras funciones globales ayudan a producir excepciones especializadas y finalizar programas, si es necesario.A number of other global functions help to throw specialized exceptions and terminate programs, if necessary. Estas macros y funciones globales se dividen en las siguientes categorías:These macros and global functions fall into the following categories:

  • Macros de excepción, que estructuran el controlador de excepciones.Exception macros, which structure your exception handler.

  • Funciones de generación de excepciones), que generan excepciones de tipos específicos.Exception-throwing functions), which generate exceptions of specific types.

  • Funciones de finalización, que provocan la finalización del programa.Termination functions, which cause program termination.

Para obtener ejemplos y más detalles, vea el artículo excepciones.For examples and more details, see the article Exceptions.

Macros de excepciónException Macros

NombreName DescripciónDescription
PRUEBATRY Designa un bloque de código para el procesamiento de excepciones.Designates a block of code for exception processing.
CATCHCATCH Designa un bloque de código para detectar una excepción del bloque try anterior.Designates a block of code for catching an exception from the preceding TRY block.
CATCH_ALLCATCH_ALL Designa un bloque de código para detectar todas las excepciones del bloque try anterior.Designates a block of code for catching all exceptions from the preceding TRY block.
AND_CATCHAND_CATCH Designa un bloque de código para detectar tipos de excepción adicionales del bloque try anterior.Designates a block of code for catching additional exception types from the preceding TRY block.
AND_CATCH_ALLAND_CATCH_ALL Designa un bloque de código para detectar todos los demás tipos de excepción adicionales que se producen en un bloque try anterior.Designates a block of code for catching all other additional exception types thrown in a preceding TRY block.
END_CATCHEND_CATCH Finaliza el último bloque de código catch o AND_CATCH .Ends the last CATCH or AND_CATCH code block.
END_CATCH_ALLEND_CATCH_ALL Finaliza el último bloque de código CATCH_ALL .Ends the last CATCH_ALL code block.
THROWTHROW Produce una excepción especificada.Throws a specified exception.
THROW_LASTTHROW_LAST Produce la excepción administrada actualmente al siguiente controlador externo.Throws the currently handled exception to the next outer handler.

Funciones de generación de excepcionesException-Throwing Functions

NombreName DescripciónDescription
AfxThrowArchiveExceptionAfxThrowArchiveException Produce una excepción de archivo.Throws an archive exception.
AfxThrowFileExceptionAfxThrowFileException Produce una excepción de archivo.Throws a file exception.
AfxThrowInvalidArgExceptionAfxThrowInvalidArgException Produce una excepción de argumento no válido.Throws an invalid argument exception.
AfxThrowMemoryExceptionAfxThrowMemoryException Produce una excepción de memoria.Throws a memory exception.
AfxThrowNotSupportedExceptionAfxThrowNotSupportedException Produce una excepción no admitida.Throws a not-supported exception.
AfxThrowResourceExceptionAfxThrowResourceException Produce una excepción de recurso no encontrado de Windows.Throws a Windows resource-not-found exception.
AfxThrowUserExceptionAfxThrowUserException Produce una excepción en una acción del programa iniciada por el usuario.Throws an exception in a user-initiated program action.

MFC proporciona dos funciones de generación de excepciones específicamente para las excepciones OLE:MFC provides two exception-throwing functions specifically for OLE exceptions:

Funciones de excepción OLEOLE Exception Functions

NombreName DescripciónDescription
AfxThrowOleDispatchExceptionAfxThrowOleDispatchException Produce una excepción en una función de automatización OLE.Throws an exception within an OLE automation function.
AfxThrowOleExceptionAfxThrowOleException Produce una excepción OLE.Throws an OLE exception.

Para admitir las excepciones de base de datos, las clases de base de datos proporcionan dos clases de excepción, CDBException y y CDaoException funciones globales para admitir los tipos de excepción:To support database exceptions, the database classes provide two exception classes, CDBException and CDaoException, and global functions to support the exception types:

Funciones de excepción de DAODAO Exception Functions

NombreName DescripciónDescription
AfxThrowDAOExceptionAfxThrowDAOException Produce CDaoException desde su propio código.Throws a CDaoException from your own code.
AfxThrowDBExceptionAfxThrowDBException Produce una excepción CDBException a partir de su propio código.Throws a CDBException from your own code.

MFC proporciona la siguiente función de terminación:MFC provides the following termination function:

Funciones de finalizaciónTermination Functions

NombreName DescripciónDescription
AfxAbortAfxAbort Se llama para finalizar una aplicación cuando se produce un error irrecuperable.Called to terminate an application when a fatal error occurs.

PRUEBATRY

Configura un bloque try .Sets up a TRY block.

TRY

ObservacionesRemarks

Un bloque try identifica un bloque de código que puede producir excepciones.A TRY block identifies a block of code that might throw exceptions. Dichas excepciones se controlan en los siguientes bloques catch y AND_CATCH .Those exceptions are handled in the following CATCH and AND_CATCH blocks. Se permite la recursividad: las excepciones se pueden pasar a un bloque try externo, ya sea pasando por alto o mediante la macro THROW_LAST.Recursion is allowed: exceptions may be passed to an outer TRY block, either by ignoring them or by using the THROW_LAST macro. Finalice el bloque try con una macro END_CATCH o END_CATCH_ALL.End the TRY block with an END_CATCH or END_CATCH_ALL macro.

Para obtener más información, vea el artículo excepciones.For more information, see the article Exceptions.

EjemploExample

Vea el ejemplo de catch.See the example for CATCH.

RequisitosRequirements

Encabezado: afx.hHeader: afx.h

CATCHCATCH

Define un bloque de código que detecta el primer tipo de excepción que se produce en el bloque try anterior.Defines a block of code that catches the first exception type thrown in the preceding TRY block.

CATCH(exception_class, exception_object_pointer_name)

ParámetrosParameters

exception_classexception_class
Especifica el tipo de excepción que se va a comprobar.Specifies the exception type to test for. Para obtener una lista de clases de excepción estándar, vea la clase CException.For a list of standard exception classes, see class CException.

exception_object_pointer_nameexception_object_pointer_name
Especifica un nombre para un puntero de objeto de excepción que se creará mediante la macro.Specifies a name for an exception-object pointer that will be created by the macro. Puede usar el nombre del puntero para tener acceso al objeto de excepción dentro del bloque catch .You can use the pointer name to access the exception object within the CATCH block. Esta variable se declara automáticamente.This variable is declared for you.

ObservacionesRemarks

El código de procesamiento de excepciones puede interrogar el objeto de excepción, si procede, para obtener más información sobre la causa específica de la excepción.The exception-processing code can interrogate the exception object, if appropriate, to get more information about the specific cause of the exception. Invocar la macro THROW_LAST para cambiar el procesamiento al siguiente marco de excepción exterior.Invoke the THROW_LAST macro to shift processing to the next outer exception frame. Finalice el bloque try con una macro END_CATCH.End the TRY block with an END_CATCH macro.

Si exception_class es la clase CException , se detectarán todos los tipos de excepción.If exception_class is the class CException, then all exception types will be caught. Puede usar la función miembro CObject:: IsKindOf para determinar qué excepción específica se produjo.You can use the CObject::IsKindOf member function to determine which specific exception was thrown. Una manera mejor de detectar varios tipos de excepciones es usar instrucciones de AND_CATCH secuenciales, cada una con un tipo de excepción diferente.A better way to catch several kinds of exceptions is to use sequential AND_CATCH statements, each with a different exception type.

La macro crea el puntero del objeto de excepción.The exception object pointer is created by the macro. No es necesario declararlo usted mismo.You do not need to declare it yourself.

Nota

El bloque catch se define como un ámbito de C++ delimitado por llaves.The CATCH block is defined as a C++ scope delineated by braces. Si se declaran variables en este ámbito, solo se puede tener acceso a ellas dentro de ese ámbito.If you declare variables in this scope, they are accessible only within that scope. Esto también se aplica a exception_object_pointer_name.This also applies to exception_object_pointer_name.

Para obtener más información sobre las excepciones y la macro CATCH, vea el artículo excepciones.For more information on exceptions and the CATCH macro, see the article Exceptions.

EjemploExample

CFile* pFile = NULL;
// Constructing a CFile object with this override may throw
// a CFile exception and won't throw any other exceptions.
// Calling CString::Format() may throw a CMemoryException,
// so we have a catch block for such exceptions, too. Any
// other exception types this function throws will be
// routed to the calling function.
TRY
{
   pFile = new CFile(_T("C:\\WINDOWS\\SYSTEM.INI"),
      CFile::modeRead | CFile::shareDenyNone);
   ULONGLONG dwLength = pFile->GetLength();
   CString str;
   str.Format(_T("Your SYSTEM.INI file is %I64u bytes long.") , dwLength);
   AfxMessageBox(str);
}
CATCH(CFileException, pEx)
{
   // Simply show an error message to the user.
   pEx->ReportError();
}
AND_CATCH(CMemoryException, pEx)
{
   // We can't recover from this memory exception, so we'll
   // just terminate the app without any cleanup. Normally, 
   // an application should do everything it possibly can to
   // clean up properly and not call AfxAbort().
   AfxAbort();
}
END_CATCH
// If an exception occurs in the CFile constructor,
// the language will free the memory allocated by new
// and will not complete the assignment to pFile.
// Thus, our cleanup code needs to test for NULL.
if (pFile != NULL)
{
   pFile->Close();
   delete pFile;
}

CATCH_ALLCATCH_ALL

Define un bloque de código que detecta todos los tipos de excepción que se producen en el bloque try anterior.Defines a block of code that catches all exception types thrown in the preceding TRY block.

CATCH_ALL(exception_object_pointer_name)

ParámetrosParameters

exception_object_pointer_nameexception_object_pointer_name
Especifica un nombre para un puntero de objeto de excepción que se creará mediante la macro.Specifies a name for an exception-object pointer that will be created by the macro. Puede usar el nombre del puntero para tener acceso al objeto de excepción en el CATCH_ALL bloque.You can use the pointer name to access the exception object within the CATCH_ALL block. Esta variable se declara automáticamente.This variable is declared for you.

ObservacionesRemarks

El código de procesamiento de excepciones puede interrogar el objeto de excepción, si procede, para obtener más información sobre la causa específica de la excepción.The exception-processing code can interrogate the exception object, if appropriate, to get more information about the specific cause of the exception. Invocar la THROW_LAST macro para desplazar el procesamiento al siguiente marco de excepción exterior.Invoke the THROW_LAST macro to shift processing to the next outer exception frame. Si usa CATCH_ALL, finalice el bloque try con una macro END_CATCH_ALL.If you use CATCH_ALL, end the TRY block with an END_CATCH_ALL macro.

Nota

El bloque CATCH_ALL se define como un ámbito de C++ delimitado por llaves.The CATCH_ALL block is defined as a C++ scope delineated by braces. Si se declaran variables en este ámbito, solo se puede tener acceso a ellas dentro de ese ámbito.If you declare variables in this scope, they are accessible only within that scope.

Para obtener más información sobre excepciones, vea el artículo excepciones.For more information on exceptions, see the article Exceptions.

EjemploExample

Vea el ejemplo de CFile:: ABORT.See the example for CFile::Abort.

RequisitosRequirements

Encabezado AFX. hHeader afx.h

AND_CATCHAND_CATCH

Define un bloque de código para detectar los tipos de excepción adicionales que se producen en un bloque try anterior.Defines a block of code for catching additional exception types thrown in a preceding TRY block.

AND_CATCH(exception_class, exception_object_pointer_name)

ParámetrosParameters

exception_classexception_class
Especifica el tipo de excepción que se va a comprobar.Specifies the exception type to test for. Para obtener una lista de clases de excepción estándar, vea la clase CException.For a list of standard exception classes, see class CException.

exception_object_pointer_nameexception_object_pointer_name
Un nombre para un puntero de objeto de excepción que se creará mediante la macro.A name for an exception-object pointer that will be created by the macro. Puede usar el nombre del puntero para tener acceso al objeto de excepción dentro del bloque AND_CATCH .You can use the pointer name to access the exception object within the AND_CATCH block. Esta variable se declara automáticamente.This variable is declared for you.

ObservacionesRemarks

Use la macro CATCH para detectar un tipo de excepción y, a continuación, la macro AND_CATCH para detectar cada tipo subsiguiente.Use the CATCH macro to catch one exception type, then the AND_CATCH macro to catch each subsequent type. Finalice el bloque try con una macro END_CATCH.End the TRY block with an END_CATCH macro.

El código de procesamiento de excepciones puede interrogar el objeto de excepción, si procede, para obtener más información sobre la causa específica de la excepción.The exception-processing code can interrogate the exception object, if appropriate, to get more information about the specific cause of the exception. Llame a la macro THROW_LAST del bloque AND_CATCH para desplazar el procesamiento al siguiente marco de excepción exterior.Call the THROW_LAST macro within the AND_CATCH block to shift processing to the next outer exception frame. AND_CATCH marca el final del bloque catch o AND_CATCH anterior.AND_CATCH marks the end of the preceding CATCH or AND_CATCH block.

Nota

El bloque AND_CATCH se define como un ámbito de C++ (delimitado por llaves).The AND_CATCH block is defined as a C++ scope (delineated by curly braces). Si declara variables en este ámbito, recuerde que solo se puede tener acceso a ellas dentro de ese ámbito.If you declare variables in this scope, remember that they are accessible only within that scope. Esto también se aplica a la variable exception_object_pointer_name .This also applies to the exception_object_pointer_name variable.

EjemploExample

Vea el ejemplo de catch.See the example for CATCH.

RequisitosRequirements

Encabezado AFX. hHeader afx.h

AND_CATCH_ALLAND_CATCH_ALL

Define un bloque de código para detectar los tipos de excepción adicionales que se producen en un bloque try anterior.Defines a block of code for catching additional exception types thrown in a preceding TRY block.

AND_CATCH_ALL(exception_object_pointer_name)

ParámetrosParameters

exception_object_pointer_nameexception_object_pointer_name
Un nombre para un puntero de objeto de excepción que se creará mediante la macro.A name for an exception-object pointer that will be created by the macro. Puede usar el nombre del puntero para tener acceso al objeto de excepción dentro del bloque AND_CATCH_ALL .You can use the pointer name to access the exception object within the AND_CATCH_ALL block. Esta variable se declara automáticamente.This variable is declared for you.

ObservacionesRemarks

Use la macro catch para detectar un tipo de excepción y, a continuación, la macro AND_CATCH_ALL para detectar todos los demás tipos subsiguientes.Use the CATCH macro to catch one exception type, then the AND_CATCH_ALL macro to catch all other subsequent types. Si usa AND_CATCH_ALL, finalice el bloque try con una macro END_CATCH_ALL.If you use AND_CATCH_ALL, end the TRY block with an END_CATCH_ALL macro.

El código de procesamiento de excepciones puede interrogar el objeto de excepción, si procede, para obtener más información sobre la causa específica de la excepción.The exception-processing code can interrogate the exception object, if appropriate, to get more information about the specific cause of the exception. Llame a la macro THROW_LAST del bloque AND_CATCH_ALL para desplazar el procesamiento al siguiente marco de excepción exterior.Call the THROW_LAST macro within the AND_CATCH_ALL block to shift processing to the next outer exception frame. AND_CATCH_ALL marca el final del bloque catch o AND_CATCH_ALL anterior.AND_CATCH_ALL marks the end of the preceding CATCH or AND_CATCH_ALL block.

Nota

El bloque AND_CATCH_ALL se define como un ámbito de C++ (delimitado por llaves).The AND_CATCH_ALL block is defined as a C++ scope (delineated by braces). Si declara variables en este ámbito, recuerde que solo se puede tener acceso a ellas dentro de ese ámbito.If you declare variables in this scope, remember that they are accessible only within that scope.

RequisitosRequirements

Encabezado AFX. hHeader afx.h

END_CATCHEND_CATCH

Marca el final del último bloque catch o AND_CATCH .Marks the end of the last CATCH or AND_CATCH block.

END_CATCH

ObservacionesRemarks

Para obtener más información sobre la macro END_CATCH, vea el artículo excepciones.For more information on the END_CATCH macro, see the article Exceptions.

RequisitosRequirements

Encabezado AFX. hHeader afx.h

END_CATCH_ALLEND_CATCH_ALL

Marca el final del último bloque de CATCH_ALL88 o AND_CATCH_ALL .Marks the end of the last CATCH_ALL88 or AND_CATCH_ALL block.

END_CATCH_ALL

RequisitosRequirements

Encabezado AFX. hHeader afx.h

THROW (MFC)THROW (MFC)

Produce la excepción especificada.Throws the specified exception.

THROW(exception_object_pointer)

ParámetrosParameters

exception_object_pointerexception_object_pointer
Apunta a un objeto de excepción derivado de CException .Points to an exception object derived from CException.

ObservacionesRemarks

Throw interrumpe la ejecución del programa, pasando el control al bloque catch asociado del programa.THROW interrupts program execution, passing control to the associated CATCH block in your program. Si no se ha proporcionado el bloque catch , el control se pasa a un módulo de biblioteca MFC que imprime un mensaje de error y se cierra.If you have not provided the CATCH block, then control is passed to a Microsoft Foundation Class Library module that prints an error message and exits.

Para obtener más información, vea el artículo excepciones.For more information, see the article Exceptions.

RequisitosRequirements

Encabezado AFX. hHeader afx.h

THROW_LASTTHROW_LAST

Vuelve a producir la excepción al siguiente bloque catch externo.Throws the exception back to the next outer CATCH block.

THROW_LAST()

ObservacionesRemarks

Esta macro permite producir una excepción creada localmente.This macro allows you to throw a locally created exception. Si intenta iniciar una excepción que acaba de detectar, normalmente se quedará fuera del ámbito y se eliminará.If you try to throw an exception that you have just caught, it will normally go out of scope and be deleted. Con THROW_LAST, la excepción se pasa correctamente al siguiente controlador catch .With THROW_LAST, the exception is passed correctly to the next CATCH handler.

Para obtener más información, vea el artículo excepciones.For more information, see the article Exceptions.

EjemploExample

Vea el ejemplo de CFile:: ABORT.See the example for CFile::Abort.

RequisitosRequirements

Encabezado AFX. hHeader afx.h

AfxThrowArchiveExceptionAfxThrowArchiveException

Produce una excepción de archivo.Throws an archive exception.

void  AfxThrowArchiveException(int cause, LPCTSTR lpszArchiveName);

ParámetrosParameters

darácause
Especifica un entero que indica la razón de la excepción.Specifies an integer that indicates the reason for the exception. Para obtener una lista de los valores posibles, vea CArchiveException:: m_cause.For a list of the possible values, see CArchiveException::m_cause.

lpszArchiveNamelpszArchiveName
Apunta a una cadena que contiene el nombre del CArchive objeto que produjo la excepción (si está disponible).Points to a string containing the name of the CArchive object that caused the exception (if available).

RequisitosRequirements

Encabezado AFX. hHeader afx.h

AfxThrowFileExceptionAfxThrowFileException

Produce una excepción de archivo.Throws a file exception.

void AfxThrowFileException(
    int cause,
    LONG lOsError = -1,
    LPCTSTR lpszFileName = NULL);

ParámetrosParameters

darácause
Especifica un entero que indica la razón de la excepción.Specifies an integer that indicates the reason for the exception. Para obtener una lista de los valores posibles, vea CFileException:: m_cause.For a list of the possible values, see CFileException::m_cause.

lOsErrorlOsError
Contiene el número de error del sistema operativo (si está disponible) que indica la razón de la excepción.Contains the operating-system error number (if available) that states the reason for the exception. Consulte el manual del sistema operativo para obtener una lista de códigos de error.See your operating-system manual for a listing of error codes.

lpszFileNamelpszFileName
Apunta a una cadena que contiene el nombre del archivo que produjo la excepción (si está disponible).Points to a string containing the name of the file that caused the exception (if available).

ObservacionesRemarks

Usted es responsable de determinar la causa en función del código de error del sistema operativo.You are responsible for determining the cause based on the operating-system error code.

RequisitosRequirements

Encabezado AFX. hHeader afx.h

AfxThrowInvalidArgExceptionAfxThrowInvalidArgException

Produce una excepción de argumento no válido.Throws an invalid argument exception.

SintaxisSyntax

void AfxThrowInvalidArgException( );

ObservacionesRemarks

Se llama a esta función cuando se usan argumentos no válidos.This function is called when invalid arguments are used.

RequisitosRequirements

Encabezado: afx.hHeader: afx.h

AfxThrowMemoryExceptionAfxThrowMemoryException

Produce una excepción de memoria.Throws a memory exception.

void AfxThrowMemoryException();

ObservacionesRemarks

Llame a esta función si se produce un error en las llamadas a asignadores de memoria del sistema subyacentes (como malloc y la función de Windows GlobalAlloc ).Call this function if calls to underlying system memory allocators (such as malloc and the GlobalAlloc Windows function) fail. No es necesario llamarlo para new porque producirá new una excepción de memoria automáticamente si se produce un error en la asignación de memoria.You do not need to call it for new because new will throw a memory exception automatically if the memory allocation fails.

RequisitosRequirements

Encabezado AFX. hHeader afx.h

AfxThrowNotSupportedExceptionAfxThrowNotSupportedException

Produce una excepción que es el resultado de una solicitud de una característica no admitida.Throws an exception that is the result of a request for an unsupported feature.

void AfxThrowNotSupportedException();

RequisitosRequirements

Encabezado AFX. hHeader afx.h

AfxThrowResourceExceptionAfxThrowResourceException

Produce una excepción de recurso.Throws a resource exception.

void  AfxThrowResourceException();

ObservacionesRemarks

Normalmente, se llama a esta función cuando no se puede cargar un recurso de Windows.This function is normally called when a Windows resource cannot be loaded.

RequisitosRequirements

Encabezado AFX. hHeader afx.h

AfxThrowUserExceptionAfxThrowUserException

Produce una excepción para detener una operación de usuario final.Throws an exception to stop an end-user operation.

void AfxThrowUserException();

ObservacionesRemarks

Normalmente, se llama a esta función inmediatamente después AfxMessageBox de que haya detectado un error al usuario.This function is normally called immediately after AfxMessageBox has reported an error to the user.

RequisitosRequirements

Encabezado AFX. hHeader afx.h

AfxThrowOleDispatchExceptionAfxThrowOleDispatchException

Utilice esta función para producir una excepción en una función de automatización OLE.Use this function to throw an exception within an OLE automation function.

void AFXAPI AfxThrowOleDispatchException(
    WORD wCode ,
    LPCSTR lpszDescription,
    UINT nHelpID = 0);

void AFXAPI AfxThrowOleDispatchException(
    WORD wCode,
    UINT nDescriptionID,
    UINT nHelpID = -1);

ParámetrosParameters

wCodewCode
Un código de error específico de la aplicación.An error code specific to your application.

lpszDescriptionlpszDescription
Descripción verbal del error.Verbal description of the error.

nDescriptionIDnDescriptionID
IDENTIFICADOR de recurso para la descripción del error verbal.Resource ID for the verbal error description.

nHelpIDnHelpID
Un contexto de ayuda para la ayuda de la aplicación (. HLP).A help context for your application's help (.HLP) file.

ObservacionesRemarks

La aplicación de conducción (Microsoft Visual Basic u otra aplicación cliente de automatización OLE) puede mostrar la información proporcionada a esta función.The information provided to this function can be displayed by the driving application (Microsoft Visual Basic or another OLE automation client application).

EjemploExample

// Sort is method of automation class CStrArrayDoc
long CStrArrayDoc::Sort(VARIANT* vArray)
{
   USES_CONVERSION;

   // Type check VARIANT parameter. It should contain a BSTR array
   // passed by reference. The array must be passed by reference; it is
   // an in-out-parameter.

   // throwing COleDispatchException allows the EXCEPINFO structure of 
   // IDispatch::Invoke() to set
   if (V_VT(vArray) != (VT_ARRAY | VT_BSTR))
      AfxThrowOleDispatchException(1001,
         _T("Type Mismatch in Parameter. Pass a string array by reference"));

   // ...
   // ...

   return 0;
}

RequisitosRequirements

Encabezado AFX. hHeader afx.h

AfxThrowOleExceptionAfxThrowOleException

Crea un objeto de tipo COleException y produce una excepción.Creates an object of type COleException and throws an exception.

void AFXAPI AfxThrowOleException(SCODE sc);
void AFXAPI AfxThrowOleException(HRESULT hr);

ParámetrosParameters

segurosc
Un código de estado OLE que indica la razón de la excepción.An OLE status code that indicates the reason for the exception.

hhr
Identificador de un código de resultado que indica la razón de la excepción.Handle to a result code that indicates the reason for the exception.

ObservacionesRemarks

La versión que toma HRESULT como argumento convierte ese código de resultado en el SCODE correspondiente.The version that takes an HRESULT as an argument converts that result code into the corresponding SCODE. Para obtener más información sobre HRESULT y SCODE, vea estructura de los códigos de error com en el Windows SDK.For more information on HRESULT and SCODE, see Structure of COM Error Codes in the Windows SDK.

RequisitosRequirements

Encabezado afxdao. hHeader afxdao.h

AfxThrowDaoExceptionAfxThrowDaoException

Llame a esta función para iniciar una excepción de tipo CDaoException desde su propio código.Call this function to throw an exception of type CDaoException from your own code.

void AFXAPI AfxThrowDaoException(
    int nAfxDaoError = NO_AFX_DAO_ERROR,
    SCODE scode = S_OK);

ParámetrosParameters

nAfxDaoErrornAfxDaoError
Un valor entero que representa un código de error extendido de DAO, que puede ser uno de los valores enumerados en CDaoException:: m_nAfxDaoError.An integer value representing a DAO extended error code, which can be one of the values listed under CDaoException::m_nAfxDaoError.

SCODEscode
Un código de error OLE de DAO, de tipo SCODE.An OLE error code from DAO, of type SCODE. Para obtener más información, consulte CDaoException:: m_scode.For information, see CDaoException::m_scode.

ObservacionesRemarks

El marco de trabajo también llama a AfxThrowDaoException .The framework also calls AfxThrowDaoException. En la llamada, puede pasar uno de los parámetros o ambos.In your call, you can pass one of the parameters or both. Por ejemplo, si desea producir uno de los errores definidos en CDaoException:: nAfxDaoError pero no le preocupa el parámetro SCODE , pase un código válido en el parámetro nAfxDaoError y acepte el valor predeterminado para SCODE.For example, if you want to raise one of the errors defined in CDaoException::nAfxDaoError but you do not care about the scode parameter, pass a valid code in the nAfxDaoError parameter and accept the default value for scode.

Para obtener información sobre las excepciones relacionadas con las clases DAO de MFC, vea CDaoException la clase en este libro y el artículo excepciones: excepciones de base de datos.For information about exceptions related to the MFC DAO classes, see class CDaoException in this book and the article Exceptions: Database Exceptions.

RequisitosRequirements

Encabezado afxdb. hHeader afxdb.h

AfxThrowDBExceptionAfxThrowDBException

Llame a esta función para iniciar una excepción de tipo CDBException desde su propio código.Call this function to throw an exception of type CDBException from your own code.

void AfxThrowDBException(
    RETCODE nRetCode,
    CDatabase* pdb,
    HSTMT hstmt);

ParámetrosParameters

nRetCodenRetCode
Un valor de tipo RETCODE, que define el tipo de error que provocó que se produjera la excepción.A value of type RETCODE, defining the type of error that caused the exception to be thrown.

PDBpdb
Puntero al CDatabase objeto que representa la conexión del origen de datos a la que está asociada la excepción.A pointer to the CDatabase object that represents the data source connection with which the exception is associated.

hstmthstmt
Identificador HSTMT de ODBC que especifica el identificador de instrucción al que está asociada la excepción.An ODBC HSTMT handle that specifies the statement handle with which the exception is associated.

ObservacionesRemarks

El marco de trabajo llama a AfxThrowDBException cuando recibe un RETCODE de ODBC de una llamada a una función de la API de ODBC e interpreta RETCODE como una condición excepcional en lugar de un error esperado.The framework calls AfxThrowDBException when it receives an ODBC RETCODE from a call to an ODBC API function and interprets the RETCODE as an exceptional condition rather than an expectable error. Por ejemplo, una operación de acceso a datos podría producir errores debido a un error de lectura de disco.For example, a data access operation might fail because of a disk read error.

Para obtener información sobre los valores de RETCODE definidos por ODBC, vea el capítulo 8, "recuperar el estado y la información del error", en el Windows SDK.For information about the RETCODE values defined by ODBC, see Chapter 8, "Retrieving Status and Error Information," in the Windows SDK. Para obtener información sobre las extensiones MFC para estos códigos, vea la clase CDBException.For information about MFC extensions to these codes, see class CDBException.

RequisitosRequirements

Encabezado AFX. hHeader afx.h

AfxAbortAfxAbort

La función de terminación predeterminada proporcionada por MFC.The default termination function supplied by MFC.

void  AfxAbort();

ObservacionesRemarks

AfxAbort llama internamente a las funciones miembro de MFC cuando se produce un error irrecuperable, como una excepción no detectada que no se puede controlar.AfxAbort is called internally by MFC member functions when there is a fatal error, such as an uncaught exception that cannot be handled. Puede llamar a AfxAbort en el caso excepcional cuando se produce un error catastrófico del que no se puede recuperar.You can call AfxAbort in the rare case when you encounter a catastrophic error from which you cannot recover.

EjemploExample

Vea el ejemplo de catch.See the example for CATCH.

RequisitosRequirements

Encabezado AFX. hHeader afx.h

Consulte tambiénSee also

Macros y variables globalesMacros and Globals
CException (clase)CException Class
Clase CInvalidArgExceptionCInvalidArgException Class