Cerca nel sito:
ricerca
avanzata

Frasi Celebri...

Fa' come se fossi a casa tua, ma non dimenticare che qui io sono a casa mia.

Jules Renard 

Sondaggio:

Chi vorreste come pilota alla Ferrari?

Montoya
Trulli
Fisichella
Alesi
R.Schumacher
Villeneuve
Hakkinen
Coultard

visualizza risultati


 

La gerarchia exception

 

Lo standard prevede tutta una serie di eccezioni, ad esempio l'operatore ::new puo` sollevare una eccezione di tipo bad_alloc, alcune classi standard (ad esempio la gerarchia degli iostream) ne prevedono altre. E` stata prevista anche una serie di classi da utilizzare all'interno dei propri programmi, in particolare in fase di debugging.
Alla base della gerarchia si trova la classe exception da cui derivano logic_error e runtime_error. La classe base attraverso il metodo virtuale what() (che restituisce un char*) e` in grado di fornire una descrizione dell'evento (cosa esattamente c'e` scritto nell'area puntata dal puntatore restituito dipende dall'implementazione).
Le differenze tra logic_error e runtime_error sono sostanzialmente astratte, la prima classe e` stata pensata per segnalare errori logici rilevabili attraverso le precondizioni o le invarianti, la classe runtime_error ha invece lo scopo di riportare errori rilevabili solo a tempo di esecuzione.
Da logic_error e runtime_error derivano poi altre classi secondo il seguente schema:

Le varie classi sostanzialmente differiscono solo concettualmente, non ci sono differenze nel loro codice, in questo caso la derivazione e` stata utilizzata al solo scopo di sottolineare delle differenze di ruolo forse non immediate da capire.
Dallo standard:

  • logic_error ha lo scopo di segnalare un errore che presumibilmente potrebbe essere rilevato prima di eseguire il programma stesso, come la violazione di una precondizione;
  • domain_error va lanciata per segnalare errori relativi alla violazione del dominio;
  • invalid_argument va utilizzato per segnalare il passaggio di un argomento non valido;
  • length_error segnala il tentativo di costruire un oggetto di dimensioni superiori a quelle permesse;
  • out_of_range riporta un errore di argomento con valore non appartenente all'intervallo di definizione;
  • runtime_error rappresenta un errore che puo` essere rilevato solo a runtime;
  • range_error segnala un errore di intervallo durante una computazione interna;
  • overflow_error riporta un errore di overflow;
  • underflow_error segnala una condizione di underflow;

Eccetto che per la classe base che non e` stata pensata per essere impiegata direttamente, il costruttore di tutte le altre classi riceve come unico argomento un const string&; il tipo string e` definito nella libreria standard del linguaggio.

 

successivo
–«  INDICE  »–

 

 

 

 
Powered by paper&pencil (carta&matita ) - Copyright © 2001-2022 Cataldo Sasso