View Full Version : [c++] gestione delle eccezioni
salve a tutti, ho un piccolo programma che con il vc++ express funziona mentre con il dev anzichè gestire l'eccezione crasha.. vi posto il codice:
#include <iostream>
using namespace std;
double dividi(int, int);
int main() {
int a, b;
cout << "inserisci a: ";
cin >> a;
cout << "inserisci b: ";
cin >> b;
try {
cout << "il risultato e: " << dividi(a, b);
} catch (char* str) {
cout << str << endl;
}
cin.get();
cin.get();
return 0;
}
double dividi(int a, int b) {
if (b)
return (double) a/b;
throw "divisione per zero impossibile";
}
sapete dirmi se è un problema del codice o del compilatore?
Prova a fare il catch di const char *
In alternativa prova con string.
incredible.. aggiungendo il const funziona.. perchè si mette const? grazie comunque.. :)
incredible.. aggiungendo il const funziona.. perchè si mette const? grazie comunque.. :)
In teoria non sarebbe dovuto crashare, mi sembra un bug, semplice non avrebbe dovuto catchare l'eccezione.
Le stringhe definite così "ciao sono una costante stringa" sono const char * e la conversione fra da const char * a char * non è ammessa.
Comunque per evitare problemi (perché lì ci sono problemi più "fini", tipo: la costante stringa è dichiarata all'interno della funzione, quindi in teoria all'esterno non dovrebbe essere più definita), fai il catch di una const string.
non posso.. non le abbiamo ancora fatte le string quindi se le uso nella verifica si incazza..
Sinceramente andrebbe analizzato bene lo standard del linguaggio per vedere se è possibile fare una cosa del genere. Vado ad aprire lo Stroustrup :O :D
Sinceramente andrebbe analizzato bene lo standard del linguaggio per vedere se è possibile fare una cosa del genere. Vado ad aprire lo Stroustrup :O :D
ce l'ho anch'io ma non mi azzardo ad aprirlo, non capisco nulla, troppo difficile :D
fai il catch di una tua classe che contiene la stringa con l'errore.
A dire la verità non sono arrivato ad una conclusione. In ogni caso credo che quelle costanti essendo definite durante tutta l'esecuzione del programma (anche al di fuori della funzione) abbiano la particolarità che l'indirizzo puntato sia valido ovunque nel programma.
Per il problema del const: il programma come ti terminava ? Con il messaggio di unhandled exception ?
In effetti l'eccezione è del tipo "const char *" e non veniva catchata (che parolaccia :)).
ok vedrò che riesco a fare grazie a tutti :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.