Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    21

    [C++] Sempice errore exception handler

    Salve. Sto studiando gli exception handler e non riesco a capire una cosa proprio all'inizio.

    Posto il codice della parte interessata.

    codice:
    class DivideByZeroException: public exception 
    {     
                  public:         DivideByZeroException()         
                  :   exception( "Attempted to divide by zero." )         
                  {}  
    };

    Proprio la base insomma ( sto seguendo gli esempi di un libro ). Solo che quando provo a compilare, il risultato è questo:


    E:\Prove\Prova\main.cpp|15|error: no matching function for call to 'std::exception::exception(const char [29])'|
    e:\program files\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4. 1\include\c++\exception|62|note: candidates are: std::exception::exception()|
    e:\program files\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4. 1\include\c++\exception|60|note: std::exception::exception(const std::exception&)|

    Come dovrei gestire exception quindi?

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    21

    Re: Re: [C++] Sempice errore exception handler

    Originariamente inviato da MacApp
    non derivare direttamente da exception, ma da logic_error o runtime_error (o loro derivati):
    http://www.cplusplus.com/reference/s...t/logic_error/
    http://www.cplusplus.com/reference/s...runtime_error/

    Grazie, ho risolto. Non sò perchè nel libro "How to Program" di Deitel&Deitel l'esempio fosse sbagliato, mi sembra strano.. Sono andato a vedere l'edizione successiva a quella in mio possesso e lì infatti usa runtime_error..
    Infatti ho risolto così:

    codice:
    #include <stdexcept>
    using std::runtime_error;
    
    
    class DivideByZeroException: public runtime_error
    {
        public:
            DivideByZeroException ()
            :   runtime_error( "Division by zero." )
            {};
    
    };

  4. #4

    Re: Re: Re: [C++] Sempice errore exception handler

    considera che spesso la divisione per zero, è un logic_error prima d'essere un runtime_error.

    p.s. almeno fino al System 7, nei Mac una qualunque divisione per zero (di un qualunque programma) implicava un inevitabile riavvio del computer; negli altri sistemi no. Perciò era rarissimo che nei programmi per Mac si dividesse per zero, mentre altrove si abbondava a colpi di NaN!
    ;-)

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    21

    Re: Re: Re: Re: [C++] Sempice errore exception handler

    Originariamente inviato da MacApp
    considera che spesso la divisione per zero, è un logic_error prima d'essere un runtime_error.

    p.s. almeno fino al System 7, nei Mac una qualunque divisione per zero (di un qualunque programma) implicava un inevitabile riavvio del computer; negli altri sistemi no. Perciò era rarissimo che nei programmi per Mac si dividesse per zero, mentre altrove si abbondava a colpi di NaN!
    ;-)
    Ottimo, allora uso logic_error
    Ma a livello pratico, quali sono le differenze effettive tra un runtime_error e un logic_error?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.