View Full Version : [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 :muro:
Vi sarei molto grato :(
#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;
}
}
Ecco l'errore che mi viene restituito a runtime:
http://www.allfreeportal.com/imghost/images/793242errore.jpg
_Claudio
11-04-2009, 16:41
#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";
}
A me così va...
stdecden
11-04-2009, 16:54
A me così va...
Confermo!:D
_Claudio
11-04-2009, 16:59
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ì...
#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";
}
Uso dev c++... può darsi che è per questo che a me non funziona a runtime???? e poi per quale motivo non dovrebbe funzionare???? :confused:
_Claudio
11-04-2009, 17:14
Uso dev c++... può darsi che è per questo che a me non funziona a runtime???? e poi per quale motivo non dovrebbe funzionare???? :confused:
:doh: prima di correggere gli errori di ciò che scrivi dovresti allora correggere gli errori di dev-cpp...
Usa Visual C++ express 2008 piuttosto...
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?
stdecden
12-04-2009, 13:52
No, perché
if (b)
equivale a
if (b != 0)
_Claudio
12-04-2009, 14:38
No, perché
if (b)
equivale a
if (b != 0)
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.
infatti, negativo può essere :p
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.