|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Sep 2006
Messaggi: 207
|
[c++] aiutino con le eccezioni
Qualcuno di buona volontà mi può spiegare perchè queste quattro linee di codice non funzionano a runtime? è da 3 ore che ci sbatto la testsa
Vi sarei molto grato Codice:
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
int Divide(int a, int b) throw(char*) {
if (b) return a/b;
throw "Errore";
}
int main (int argc, char *argv[])
{
try {
cout << "Il risultato e` " << Divide(4, 0);
}
catch(char* Stringa) {
cout << Stringa << endl;
return -1;
}
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Aug 2005
Messaggi: 579
|
Codice:
#include <iostream>
using namespace std;
int Divide(int, int);
int main (int argc, char *argv[]) {
try {
cout << "Il risultato e` " << Divide(4, 0);
}
catch(char* Stringa) {
cout << Stringa << endl;
return -1;
}
return 0;
}
int Divide(int a, int b) {
if (b) return a/b;
throw "Errore";
}
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Apr 2007
Messaggi: 263
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Aug 2005
Messaggi: 579
|
Tra l'altro se vogliamo fare i puristi ci sono alcuni errori di forma... ma vabè... la forma è pur sempre soggettiva...
Il consiglio spassionato però è non includere ciò che non è utile. Vogliamo mettere come rende così... Codice:
#include <iostream>
using namespace std;
int divide(int, int);
void main (int argc, char *argv[]) {
try {
cout << "Il risultato e' " << divide(4, 0);
} catch(char* stringa) { cout << stringa << endl; }
}
int divide(int a, int b) {
if(b != 0) return a/b;
else throw "Errore";
}
Ultima modifica di _Claudio : 11-04-2009 alle 18:02. |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Sep 2006
Messaggi: 207
|
Uso dev c++... può darsi che è per questo che a me non funziona a runtime???? e poi per quale motivo non dovrebbe funzionare????
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Aug 2005
Messaggi: 579
|
Quote:
prima di correggere gli errori di ciò che scrivi dovresti allora correggere gli errori di dev-cpp...Usa Visual C++ express 2008 piuttosto... |
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Dec 2008
Messaggi: 68
|
O Code::Blocks
__________________
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12955
|
Scusate, ma sbaglio o nella condizione all'interno della funzione Divide c'è scritto:
if (b) return a/b? Non dovrebbe esserci scritto, if (b>0) return a/b? |
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Apr 2007
Messaggi: 263
|
No, perché
Codice:
if (b) Codice:
if (b != 0) |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Aug 2005
Messaggi: 579
|
Esatto, il quoziente è definito anche per denominatore negativo... ma è buona pratica definire esplicitamente le condizioni, sia per eventuali problemi relativi al compilatore, sia per una maggiore chiarezza ed eleganza del codice.
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
infatti, negativo può essere
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:14.












prima di correggere gli errori di ciò che scrivi dovresti allora correggere gli errori di dev-cpp...








