Newsgroup: it.comp.lang.c++
Titolo: Eccezioni e dimenticanze

Salve,
scusate la banalità, ma non capisco perché questo esempio di cattura
delle eccezioni non mi funziona come dovrebbe. cosa sbaglio?
---startcode
#include <iostream>
#include <string>
using namespace std;
int Dividi(int a, int b) throw(char*)  {
  if (b) return a/b;
  throw "Errore, divisione per 0 impossibile";
}
int main() {
  cout << "Immetti il dividendo: ";
  int a;
  cin >> a;
  cout << endl << "Immetti il divisore: ";
  int b;
  cin >> b;
  cout << endl;
try {
  cout << "Il risultato e` " << Dividi(a,b) << endl;
  }
catch(char* String) {
    cout << String << endl;
  return -1;
  }
  return 0;
}
---endcode
dividendo 10 per 0 mi dà
Il risultato e` Abort trap
e non il messaggio che vorrei.
ciao e grazie :)
-- 
salvo
-- 
#!/usr/bin/perl
print "NeXT tip => /me == (~§alvomi©~ @ddress) - (Alfa kai Omega) \n";


scrivendo throw "qualcosa" sollevi un eccezione di tipo const char * e 
non di tipo char *
quindi la funzione Dividi deve diventare:
int Dividi(int a, int b) throw(const char*)
e il blocco catch :
catch(const char * String)
altri suggerimenti di stile:
Dividi -> dividi (opinabile)
String -> string (sicuro)

 String -> string (sicuro)
anche questo ok :)
ciao :)
salvo

 String -> string (sicuro)
string? si puo` usare un nome di una classe per un'istanza?
compila, ma lasciatemi esprimere perplessità ...
Saluti
-- 
alef

...



Certe. Anchè i nomi delle classe obisciono alle regole del scope.
Se è una buona idea è altra cosà.
Anchè, non mi sembra molto bene far un catch sul char*. Perchè non
interferirà i char const*, e dunque, non interferirà une costante di
catena.
--
James Kanze           GABI Software         
http://www.gabi-soft.fr
Conseils en informatique orientée objet/
                   Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, 
+33 (0)1 30 23 00 34

 ha scritto nel messaggio
news:d6652001.04091...@posting.google.com...
Secondo me, anche se il newsgroup è italiano, è meglio che posti inglese,
perchè spesso non si capisce quello che vuoi dire...

Acaccia wrote:

per me era abbastanza chiaro. Mi scuserà Kanze se faro' una piccola 
"traduzione" di quello che ha scritto :-)
Certo. Anche i nomi delle classi obbediscono alle regole dello scope.
Se è una buona idea è un'altra cosa.
[si riferisce al fatto che la classe che si chiama string delle librerie 
standard è dentro al namespace 'std', quindi il nome completo è std::string]
Aggiungo che non mi sembra molto corretto fare un catch su un char *, 
perchè non saranno intercettati i char const *.
[c'è un altro pezzettino che non ho capito, sinceramente, però a questo 
punto il concetto era ormai chiaro, imho]
-- 
There are better things in life than alcohol, but alcohol makes up for 
not having them. - Terry Pratchett.

 "traduzione" di quello che ha scritto :-)
Chiedo scusa se il mio post è stato frainteso, non volevo essere scortese.
Parte dei post di Kanze (non mi riferisco solo a questo post),
effettivamente si capiscono (anche se bisogna sempre dargli
un'interpretazione), ma altre parti parti rimangono comunque oscure. Pensavo
che forse era meglio per lui e per noi se venisse utilizzata la lingua
inglese perchè è la più "internazionale" e soprattutto perchè i principali
testi tecnici a riguardo sono in inglese. Era solo un consiglio per rendere
più efficaci le sue risposte non un rimprovero...
Ciao :o)
Andrea

 più efficaci le sue risposte non un rimprovero...
Credo che per lui sia più una esercitazione dell'italiano, visto il
curriculum che pubblica nel sito da lui messo nella sua firma :-)
Comunque, è considerato scorretto correggere gli erori gramaticali degli
altri almeno secondo le regole usenet che ho letto, ma se nel caso di
Kanze fosse veramente un esercizio misto all'interesse professionale e visto
il contributo che lui da a questo gruppo, penso che correggere
l'italiano nei suoi post sia da fare in privato con lui ed eventualmente
chiedergli se vuole lui stesso rifare un post per permettere agli altri
di capire meglio o chiedergli che permetta ad altri di correggerlo.
Di postare in inglese, mi dispiace ma veramente lo trovo inutile.
Sarebbe più efficace per noi come scrive Acaccia, ma forse per lui poco
interessante. Questa discussione sarà fuori tema per l'argomento del
newsgroup, ma forse non lo è poi così tanto per l'interesse del newsgroup
stesso.
Inoltre, e chiudo qui, imparare nuove lingue (e non solo "linguaggi" :-)
è una bella cosa, specialmente se qualcuno lo fa con la tua, quindi
cerchiamo di essere rispettosi e di aiutare chi vuole farlo. Ovviamente
con il suo consenso.
Saluti.
-- 
alef

 di capire meglio o chiedergli che permetta ad altri di correggerlo.
effettivamente credo tu abbia ragione, e mi scuso con lui.


 wrote in message news:<cica57$kqi$1...@mammooth.localnet>...

Non sono d'accordo. Anche se James non scrive un italiano perfetto si
capisce cosa vuol dire e penso che il contributo di una persona
esperta come lui sia un'ottima cosa per questo newsgroup.
Se volete da lui risposte in inglese potete sempre scrivere su
comp.lang.c++.moderated .
Ciao,
Nicola