Compartir a través de


try, catch, e instrucciones throw (C++)

Las excepciones de C++ utilizan el intento, detecte y producen palabras clave.

señales de una expresión throw el error o la condición excepcional.Puede utilizar un objeto de cualquier tipo como el operando de una expresión throw.Este objeto se utiliza normalmente para transmitir la información sobre el error.Normalmente, debe utilizar el objeto std:: la clase de excepción o una de las clases derivadas que se definen en la biblioteca estándar, o si ninguno de los correspondientes, después deriva posee la clase de excepción std:: excepción.

Un bloque try incluye una o más instrucciones que pueden producir una excepción.

Uno o más bloques catch siguen inmediatamente a un bloque try.Cada bloque catch especifica el tipo de excepción que puede controlar.

La sintaxis siguiente se muestra un bloque de try de ejemplo y sus controladores.Suponga que GetNetworkResource() adquiere datos sobre una red conectarse, y que los dos tipos de excepción son clases definidas por el usuario que derivan de la nota de std:: excepción que las excepciones se pasan por referencia en la instrucción catch:

MyData md;
try {
   // code that could throw an exception
   md = GetNetworkResource();
}
catch (networkIOException& e) {
   // code that executes when an exception of type
  // networkIOException is thrown in the try block
//…
// Log error message in the exception object.
   cerr << e.what();
}
catch (myDataFormatException& e) {
   // code that handles another exception type
//…
 cerr << e.what();

}

// The following syntax shows a throw expression:

MyData GetNetworkResource()
{
    //...
    if(IOSuccess == false)
        throw networkIOException("Unable to connect");
    //...
    if(readError)
        throw myDataFormatException("Format error"); 
    // ...
}

Comentarios

El código después de la cláusula de try es la sección guardada de código.La expresión throw produce () produce una excepción.El bloque de código después de la cláusula de catch es el controlador de excepciones, y detectar (identificadores) la excepción producida por la expresión throw si el tipo en expresiones throw y catch es compatible.Para obtener una lista de reglas que rijan tipo-a juego en bloques catch, vea el ___.Si la instrucción catch especifica puntos suspensivos (...) en lugar de un tipo, el bloque de catch administra cualquier tipo de excepción, incluidas las excepciones de C y el sistema o las excepciones aplicación-generadas como protección de memoria, división por cero, y infracciones de punto flotante.Dado que los bloques catch se intentan en orden de programa, por controlador debe ser el último controlador para el bloque de try .Captura de uso (…) con precaución; este tipo de bloque catch se utiliza normalmente para registrar errores y realizar cualquier limpieza especial antes de detener la ejecución del programa.No permita que un programa continúe a menos que el bloque catch pueda controlar la excepción específica se detecta que.

Una expresión throw sin generar de operando la excepción que es administrada actualmente.Una expresión únicamente debe aparecer en un controlador de catch o en una función denominada dentro de un controlador de catch .el objeto de excepción re-lanzado es el objeto de excepción original (no una copia).Por ejemplo:

try {
   throw CSomeOtherException();
}
catch(...) {  // Catch all exceptions – dangerous!!!
   // Respond (perhaps only partially) to exception
   throw;       // Pass exception to some other handler
}

Vea también

Referencia

Control de excepciones de C++

Palabras clave de C++

Excepciones de C++ no controlados

__uncaught_exception

Otros recursos

Cómo: Identificador de excepciones en la clase base Constructores (C++)