Programación c ++: generar excepciones

Una función de C ++ que asigna los recursos a nivel local puede tener que capturar una excepción, hacer algo de procesamiento, y luego volver a lanzar hacia arriba la cadena de pila. Consideremos el siguiente ejemplo:

fileFunc anular () {* ofstream Pout = new ofstream ("archivo.txt") -otherFunction () - eliminar pOut-}

Como muchos programadores saben, la memoria asignada por nuevo no se devuelve a la pila de forma automática. Si otherFunction () fueron a lanzar una excepción, el control podría salir del programa sin necesidad de invocar borrar, y la memoria asignada al inicio de fileFunc () se perdería.

Para evitar este problema, fileFunc () puede incluir una captura(…) para recoger cualquier excepción lanzada:

fileFunc anular () {* ofstream Pout = new ofstream ("archivo.txt") -probar {otherFunction () - eliminar pOut-} catch (...) {borrar Pout-}} ​​haciendo que sus

Dentro de esta frase, fileFunc () devuelve la memoria asignada anteriormente a la pila. Sin embargo, no está en condiciones de procesar el resto de la excepción, ya que no tiene idea de lo que pudo haber salido mal. Ni siquiera se sabe qué tipo de objeto que acaba de coger.

los lanzar palabra clave sin ningún argumento relanzamientos el objeto de excepción actual de copia de seguridad de la cadena de alguna función que puede procesar correctamente el error.

Artículos Relacionados