Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: [c++]eccezioni

  1. #1
    Utente di HTML.it L'avatar di mica81
    Registrato dal
    Nov 2003
    Messaggi
    87

    [c++]eccezioni

    ciao a tutti.
    guardate questo codice:
    codice:
    #include<iostream.h>
    
    void eccezione()
    {
         int a, b;
         cout<<"Introduci due interi positivi:\n";
         cin>>a>>b;
         if (a == b) throw "errore! i due numeri sono uguali\n";
         else if(a > b) cout<<"il maggiore tra i due e': "<< a <<"\n";
         else if (b > a) cout<<"il maggiore tra i due e': "<< b <<"\n";
        
         }
         
         int main()
         {   
             int conta(0);
             while(conta < 5)
             {
              try
              {   eccezione();   }
             
              catch(char* p)
              {   cout<< p <<endl;  }
              
              conta = conta +1;
               }//return false;
            
             system("pause");
             return 0;
            }
    funziona benissimo a parte che il messaggio di errore del'eccezione non viene visualizzato. cosa sbaglio?

  2. #2
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354
    non conosco il c++ ma "cin>>a>>b;" mi sa di strano.
    prova con il c normale!

  3. #3

    Re: [c++]eccezioni

    gcc version 3.3.2 su win
    con la modifica segnata in blu
    codice:
    #include <iostream>
    
    using namespace std;
    
    void eccezione()
    {
         int a, b;
         cout<<"Introduci due interi positivi:\n";
         cin >> a >> b;
         if (a == b) throw "errore! i due numeri sono uguali\n";
         else if(a > b) cout<<"il maggiore tra i due e': "<< a <<"\n";
         else if (b > a) cout<<"il maggiore tra i due e': "<< b <<"\n";
    }
         
    int main()
    {   
      int conta(0);
      while(conta < 5)
      {
        try
        {   eccezione();   }
    
        catch(const char* p)
        {   cout<< p <<endl;  }
              
        conta = conta +1;
      }
            
      system("pause");
      return 0;
    }
    il run
    codice:
    Introduci due interi positivi:
    2
    2
    errore! i due numeri sono uguali
    
    Introduci due interi positivi:
    1
    2
    il maggiore tra i due e': 2
    Introduci due interi positivi:

  4. #4
    Premetto che non conosco bene il c++, e non conosco l'istruzione throw,

    ma mi chiedo perchè tu usi questo :

    if (a == b) throw "errore! i due numeri sono uguali\n";


    e non questo :

    if (a == b) cout<<"errore! i due numeri sono uguali\n";


    Ciao Antonio.
    Vuoi guadagnare con il tuo sito ?
    affiliati con noi e riceverai ottime percentuali !!!
    Travellero Affiliate Program
    Scambia link con noi

  5. #5
    Perche' non vuole stampare un messaggio bensi' lanciare (throw) un eccezione, cioe' un errore che puo' essere gestito dal programma stesso tramite l'altra istruzione catch.
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  6. #6
    dekdek, grazie per la risposta

    In pratica è una gestione interna degli errori, interessante non lo sapevo!

    e invece la "const" che ha inserito "internet" cosa cambia ?

    Ciao Antonio.
    Vuoi guadagnare con il tuo sito ?
    affiliati con noi e riceverai ottime percentuali !!!
    Travellero Affiliate Program
    Scambia link con noi

  7. #7
    Non ricordo se c'entra qualcosa... Ormai mi sono Javizzato!
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  8. #8
    Originariamente inviato da anton1o
    dekdek, grazie per la risposta

    In pratica è una gestione interna degli errori, interessante non lo sapevo!

    e invece la "const" che ha inserito "internet" cosa cambia ?

    Ciao Antonio.
    Senza quel const va in segmentation fault, almeno gcc su win.
    Questo perchè le string literals (cioè quelle che metti tra apici) in C/C++ sono costanti, e l'uso del const serve a garantire che il programma non vada a modificare queste stringhe.

  9. #9
    Utente di HTML.it L'avatar di mica81
    Registrato dal
    Nov 2003
    Messaggi
    87
    aaah grande grazie mille! non ci avevo pensato!
    io come compilatore uso il dev-cpp che è un porting del compilatore di gnu.

  10. #10
    Io ho usato questo http://www.delorie.com/djgpp/
    Si tratta del primo porting (1989) del gcc su piattaforma dos poi windows.
    lo uso come in linux/unix, a linea di comando, per progetti complessi lo abbino a Make

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.