+ Rispondi
Risultati da 1 a 5 su 5
  1. #1
    {abstract}
    Iscritto dal
    05/09/2011
    LocalitÓ
    altrove.
    Messaggi
    4,110

    [c++] sollevare eccezione nel costruttore ...

    ciao raga ...
    mi serve un vostro parere ...

    ho una classe A, il suo costruttore ha una lista di parametri formali ...
    all'interno del costruttore devo verificare la correttezza dei parametri attuali, in sostanza che siano ben formati ...
    una volta verificato che siano coerenti, procedo con la costruzione dell'oggetto di tipo A: uso i parametri attuali per inizializzare in un determinato modo i campi dati privati di A ...

    ora ...
    se i parametri attuali non sono corretti devo sollevare delle eccezioni a seconda del tipo di errore riscontrato ...
    qui mi sorge una domanda ...

    controllo i dati, questi sono errati, viene lanciata una eccezione ...
    in che stato mi si trova l'oggetto A che stavo costruendo ?
    la memoria viene rilasciata ? la memoria viene ripulita da questo pseudo oggetto A ?
    siccome l'oggetto non Ŕ stato costruito completamente, non viene richiamato il distruttore di A ...

    per chiarire i vari passi:

    codice:
    /* --------------------------------------------------- */
    
    A(x,y,z){
    //verifico correttezza x, y, z
    //-----//nel caso, lancio una eccezione
    
    //se sono qui (nessuna eccezione), x,y,z sono corretti
    
    //inizializzo i campi dati di A tramite x, y, z 
    }
    
    /* --------------------------------------------------- */

    grasSsie ...

    ...

  2. #2

    Iscritto dal
    13/12/2011
    LocalitÓ
    Salento!
    Messaggi
    6,858
    Quote Originariamente inviato da Urizen Visualizza il messaggio
    ciao raga ...
    mi serve un vostro parere ...

    ho una classe A, il suo costruttore ha una lista di parametri formali ...
    all'interno del costruttore devo verificare la correttezza dei parametri attuali, in sostanza che siano ben formati ...
    una volta verificato che siano coerenti, procedo con la costruzione dell'oggetto di tipo A: uso i parametri attuali per inizializzare in un determinato modo i campi dati privati di A ...

    ora ...
    se i parametri attuali non sono corretti devo sollevare delle eccezioni a seconda del tipo di errore riscontrato ...
    qui mi sorge una domanda ...

    controllo i dati, questi sono errati, viene lanciata una eccezione ...
    in che stato mi si trova l'oggetto A che stavo costruendo ?
    la memoria viene rilasciata ? la memoria viene ripulita da questo pseudo oggetto A ?
    siccome l'oggetto non Ŕ stato costruito completamente, non viene richiamato il distruttore di A ...

    per chiarire i vari passi:

    codice:
    /* --------------------------------------------------- */
    
    A(x,y,z){
    //verifico correttezza x, y, z
    //-----//nel caso, lancio una eccezione
    
    //se sono qui (nessuna eccezione), x,y,z sono corretti
    
    //inizializzo i campi dati di A tramite x, y, z 
    }
    
    /* --------------------------------------------------- */

    grasSsie ...

    si, dovrebbe essere eliminato dalla memoria non andando a buon fine il costruttore. Vedo se riesco a verificarlo
    edit: www.cplusplus.com/articles/3wTbqMoL/

  3. #3
    {abstract}
    Iscritto dal
    05/09/2011
    LocalitÓ
    altrove.
    Messaggi
    4,110
    quindi non dovrei aver nessun problema ...
    anche perchŔ, prima controllo ... nel caso lancio l'eccezione (i campi dati di A non sono stati inizializzati, Ŕ l'ultima cosa che faccio) ...
    altrimenti, controllo ... andato tutto a buon fine, costruisco i campi dati di A ...

    giusto ?
    ...

  4. #4

    Iscritto dal
    13/12/2011
    LocalitÓ
    Salento!
    Messaggi
    6,858
    Quote Originariamente inviato da Urizen Visualizza il messaggio
    quindi non dovrei aver nessun problema ...
    anche perchŔ, prima controllo ... nel caso lancio l'eccezione (i campi dati di A non sono stati inizializzati, Ŕ l'ultima cosa che faccio) ...
    altrimenti, controllo ... andato tutto a buon fine, costruisco i campi dati di A ...

    giusto ?
    si, ovviamente se tu inizializzi qualcosa prima del throw dell'eccezione devi essere tu a de-allocarlo. ma la logica Ŕ:

    controllo validitÓ parametri
    se negativa throw illegalargumentexception
    se positiva
    inizializzo ci˛ che mi serve etc.

  5. #5
    {abstract}
    Iscritto dal
    05/09/2011
    LocalitÓ
    altrove.
    Messaggi
    4,110
    perfetto ...
    grazie 1000 xam ...

    +
    ...


 

Autorizzazioni

  • Non puoi iniziare nuove discussioni
  • Non puoi rispondere alle discussioni
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
Powered by vBulletin™ Version 4.1.5
Copyright © 2019 vBulletin Solutions, Inc. All rights reserved
SEO by vBSEO ©2011, Crawlability, Inc.
Fuso orario: UTC +1, sono le 18:47.