Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Curso C++

[Home]  [Inicio]  [Índice]


1.5.2   Soporte de runtime

§1  Sinopsis

El lenguaje C++ dispone de una serie de utilidades diseñadas para ofrecer al programador soporte de tiempo de ejecución ("Runtime"). En realidad este soporte está constituido por una serie de añadidos heterogéneos de difícil clasificación, cuyo único punto en común es que se refieren a "runtime". Es decir, a circunstancias que no pueden ser adelantadas o previstas en tiempo de compilación.

Algunos, como el operador typeid o el sistema de excepciones, son incorporaciones tardías que no existían en las primeras versiones del lenguaje, cuya inclusión ha sido aconsejada por la experiencia. Algunos son elementos del lenguaje, otros son utilidades incorporadas a la Librería Estándar que, como tales, no forman parte del lenguaje en sentido estricto, aunque sí del C++ práctico [1].

La heterogeneidad antes mencionada, hace que su descripción se encuentre dispersa a lo largo de esta obra, de modo que su inclusión en este capítulo solo es a título de presentación, con el fin de ofrecer al lector una visión sinóptica de su conjunto.

Las principales incorporaciones de C++ en este sentido, han sido el mecanismo de excepciones; el soporte RTTI, y una serie de funciones y clases que proporcionan determinadas funcionalidades en tiempo de ejecución.

  • Sistema RTTI:  Estas siglas se refieren al mecanismo C++ que permite determinar en tiempo de ejecución el tipo de un objeto. Es generalmente conocido por su acrónimo inglés RTTI ("Run time type identification"). Es una parte importante del mecanismo de comprobación de tipos del lenguaje ( 4.9.14).

  • Sistema de excepciones:  Un sistema que permite controlar circunstancias excepcionales. Por ejemplo, errores imprevistos ( 1.6).

  • Clases:  Un conjunto de clases, de las que el sistema instancia objetos como vehículo para proporcionar información de utilidad en tiempo de ejecución (la mayoría de las veces información sobre circunstancias erróneas). Son las siguientes:

    • bad_alloc:  Tipo de la excepción lanzada por el operador new cuando se produce un error ( 4.9.20d)

    • bad_cast:  Tipo de la excepción lanzada por el operador de modelado dynamic_cast cuando fracasa la conversión de una referencia ( 4.9.9c)

    • bad_typeid:  Tipo de la excepción lanzada por el operador typeid cuando se produce un error ( 4.9.14).

    • type_info:  Objeto devuelto por el operador typeid, que permite conocer el tipo de un objeto ( 4.9.14a).

  • Funciones:

    • set_new_handler:  Es una función de la Librería Estándar que permite instalar un manejador definido por el usuario (una función) para el caso de que el operador new fracase en su intento de construir un objeto. ( 4.9.20d)

    • set_terminate:  Es una función similar a la anterior. Permite instalar un manejador de usuario (función) que será invocada cuando ocurra una excepción que no tiene definido un manejador específico ( 1.6.3).

    • set_unexpected:  Función análoga a las anteriores. Permite instalar un manejador que será utilizado cuando aparezca una excepción imprevista ( 1.6.3).

    • terminate:  Es una función de la Librería Estándar que funciona como valor por defecto de set_terminate. Es decir, si ocurre una excepción que no tiene un manejador "Handler" específico, y tampoco se ha instalado alguno por defecto con set_terminate,  el sistema utiliza esta función (que a su vez se limita a invocar a abort() 1.6.3)

    • unexpected :  Esta función es a set_unexpected lo que terminate a set_terminate. Es decir, si ocurre una excepción imprevista para la que no se ha instalado ningún manejador por defecto con ser_unexpected, se invoca esta función ( que a su vez invoca a terminate, que invoca a abort 1.6.3).

  Inicio.


[1]  Forman el grupo de librerías denominadas "de soporte" del lenguaje ( 5).