Excepciones en la librería estándar

Solo disponible en BuenasTareas
  • Páginas : 3 (639 palabras )
  • Descarga(s) : 0
  • Publicado : 13 de febrero de 2012
Leer documento completo
Vista previa del texto
Excepciones en la Librería Estándar
Ciertos elementos del lenguaje y algunas utilidades de la Librería Estándar pueden lanzan excepciones para señalar condiciones de error.  Los objetos lanzadospertenecen a algún miembro de una jerarquía de clases que tiene el siguiente diseño:
exception
    logic_error
        domain_error
        invalid_argument
        length_error
       out_of_range
    runtime_error
        range_error
        overflow_error
        underflow_error
bad_alloc
bad_cast
bad_exception
bad_typeid

Como puede verse, todas ellas derivan de la superclaseexception, definida en la cabecera , que tiene la siguiente interfaz:
class exception {
  public:
  exception () throw();
  exception (const exception&) throw();
  exception& operator= (constexception&) throw();
  virtual ~exception () throw();
  virtual const char* what () const throw();
};
Esta clase tiene cinco métodos públicos, ninguno de los cuales puede lanzar una excepción.  El másinteresante es what(), que generalmente devuelve una descripción textual del error causante de la excepción.

[pic]  Un logic_error señala una inconsistencia en la lógica interna del programa, o laviolación de cierta precondición en la parte del software cliente (una rutina de usuario).  Por ejemplo, el método substr de la clase estándar string, lanza una excepción del tipo out_of_range si seinterroga una subcadena (substring) situado más allá del final de la cadena.
Interfaz:
class logic_error : public exception {
  public:
  explicit logic_error (const string& what_arg);
};
De estaclase derivan las siguientes:
class domain_error : public logic_error {
  public:
  explicit domain_error (const string& what_arg);
};
class invalid_argument : public logic_error {
  public:
 explicit invalid_argument (const string& what_arg);
};

class length_error : public logic_error {
  public:
  explicit length_error (const string& what_arg);
};

class out_of_range : public...
tracking img