Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[OT] C++, Gestire le eccezioni
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Forum di discussione italiano
View previous topic :: View next topic  
Author Message
AlbertoSSj
Tux's lil' helper
Tux's lil' helper


Joined: 21 Nov 2004
Posts: 135

PostPosted: Sat May 07, 2005 9:23 am    Post subject: [OT] C++, Gestire le eccezioni Reply with quote

Ho fatto un po di prove, ed ho visto che gcc la dichiarazione delle throw() la ignora completamente.

Invece a me servirebbe un controllo stretto, cioè se qualcosa mi può lanciare eccezioni io lo devo sapere ( devo mettere mani in un magma di codice per la tesi :'( ).
Adesso infatti mi capitano degli abort random, che non so dove andare a beccare :\

tnk
Back to top
View user's profile Send private message
Danilo
l33t
l33t


Joined: 05 Feb 2004
Posts: 747
Location: Italy

PostPosted: Sat May 07, 2005 3:32 pm    Post subject: Re: [OT] C++, Gestire le eccezioni Reply with quote

AlbertoSSj wrote:
Ho fatto un po di prove, ed ho visto che gcc la dichiarazione delle throw() la ignora completamente.

Invece a me servirebbe un controllo stretto, cioè se qualcosa mi può lanciare eccezioni io lo devo sapere ( devo mettere mani in un magma di codice per la tesi :'( ).
Adesso infatti mi capitano degli abort random, che non so dove andare a beccare :\

tnk


Se ho capito tu vorresti fare come in java in cui se dichiari che un metodo possa lanciare eccezioni il metodo chiamante almeno deve fare un catch(...).

Da quello che so il c++, almeno standard ANSI, non prevede questo.

Per quanto riguarda gli abort: potresti compilare con opzioni di debug e poi con il debugger stesso fare una analisi di quello che e' successo usando il file core.
In genere per programmi multithread si fa cosi'...

Inoltre tieni presente che anche se usi try{} catch(){} i segmentation fault di funzioni in C non wrappate non vengono intercettati dal catch.
Back to top
View user's profile Send private message
comio
Advocate
Advocate


Joined: 03 Jul 2003
Posts: 2191
Location: Taranto

PostPosted: Sat May 07, 2005 4:45 pm    Post subject: Re: [OT] C++, Gestire le eccezioni Reply with quote

AlbertoSSj wrote:
Ho fatto un po di prove, ed ho visto che gcc la dichiarazione delle throw() la ignora completamente.

Invece a me servirebbe un controllo stretto, cioè se qualcosa mi può lanciare eccezioni io lo devo sapere ( devo mettere mani in un magma di codice per la tesi :'( ).
Adesso infatti mi capitano degli abort random, che non so dove andare a beccare :\

tnk


sorry la feature non è in casa c++...
_________________
RTFM!!!!

e

http://www.comio.it
:)
Back to top
View user's profile Send private message
AlbertoSSj
Tux's lil' helper
Tux's lil' helper


Joined: 21 Nov 2004
Posts: 135

PostPosted: Sat May 07, 2005 5:52 pm    Post subject: Reply with quote

mmmm, ma allora vale veramente la pena usare le eccezioni?
Back to top
View user's profile Send private message
comio
Advocate
Advocate


Joined: 03 Jul 2003
Posts: 2191
Location: Taranto

PostPosted: Sat May 07, 2005 7:49 pm    Post subject: Reply with quote

AlbertoSSj wrote:
mmmm, ma allora vale veramente la pena usare le eccezioni?


c'è gente che si pone questa domanda... poi hanno fatto java e c#.

ciao
_________________
RTFM!!!!

e

http://www.comio.it
:)
Back to top
View user's profile Send private message
randomaze
Bodhisattva
Bodhisattva


Joined: 21 Oct 2003
Posts: 9985

PostPosted: Sat May 07, 2005 9:06 pm    Post subject: Reply with quote

AlbertoSSj wrote:
mmmm, ma allora vale veramente la pena usare le eccezioni?


Premettendo che é da un bel pó che non tocco il C++ e del come gestisse le eccezioni non ho nessun ricordo, se ho letto bene quel che ti capita ti sarebbe piú comodo un debugger....

Come 2c da lanciare nella discussione potrei dire che tutti i costrutti servono e non servono, dipende da come vengono utilizzati.
_________________
Ciao da me!
Back to top
View user's profile Send private message
AlbertoSSj
Tux's lil' helper
Tux's lil' helper


Joined: 21 Nov 2004
Posts: 135

PostPosted: Sun May 08, 2005 7:04 am    Post subject: Reply with quote

Mha, preferisco usarle le eccezioni, solo che non riesco a capire l'utilità di dichiarare una funzione

inf foo() throw()

Cioè non ho proprio capito che cambia da

int bar throw( barexception )

Ps: C'è un debugger che fa vedere da dove sono state lanciate le eccezioni?

ho provato con gdb ma la where mi ha risposto questo

Code:
Program received signal SIGABRT, Aborted.
0xffffe410 in __kernel_vsyscall ()
(gdb) where
#0  0xffffe410 in __kernel_vsyscall ()
#1  0xb7df98d1 in raise () from /lib/libc.so.6
#2  0xb7dfb42b in abort () from /lib/libc.so.6
#3  0xbfffeaf0 in ?? ()
#4  0x00000000 in ?? ()
#5  0x00000020 in ?? ()
#6  0x00000000 in ?? ()
#7  0x00000000 in ?? ()
#8  0x00000000 in ?? ()
#9  0x00000000 in ?? ()
#10 0x00000000 in ?? ()
#11 0x00000000 in ?? ()
#12 0x00000000 in ?? ()
#13 0x00000000 in ?? ()
#14 0x00000000 in ?? ()
#15 0x00000000 in ?? ()
#16 0x00000000 in ?? ()
#17 0x00000000 in ?? ()
#18 0x00000000 in ?? ()
#19 0x00000000 in ?? ()
#20 0x00000000 in ?? ()
#21 0x00000000 in ?? ()
#22 0x00000000 in ?? ()
#23 0x00000000 in ?? ()
#24 0x00000000 in ?? ()
#25 0x00000000 in ?? ()
#26 0x00000000 in ?? ()
#27 0x00000000 in ?? ()
#28 0x00000000 in ?? ()
#29 0x00000000 in ?? ()
#30 0x00000000 in ?? ()
#31 0x00000000 in ?? ()
#32 0x00000000 in ?? ()
#33 0x00000000 in ?? ()
#34 0x00000000 in ?? ()
#35 0x00000000 in ?? ()
#36 0x00000000 in ?? ()
#37 0xbfffeb9c in ?? ()
#38 0x00000000 in ?? ()
#39 0x00000000 in ?? ()
#40 0x00000000 in ?? ()
#41 0x00000000 in ?? ()
#42 0x09844246 in ?? ()
#43 0xbfffec10 in ?? ()
#44 0xb8001d30 in ?? ()
#45 0xb7f45a5b in ?? () from /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5-20050130/libstdc++.so.5
#46 0x00000000 in ?? ()
#47 0x0804e1cc in ?? ()
#48 0xb7f1de48 in ?? () from /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.5-20050130/libstdc++.so.5
#49 0xb8001d30 in ?? ()
#50 0x070fa387 in ?? ()
#51 0xbfffec30 in ?? ()
#52 0xb80014e0 in _r_debug ()
#53 0xbfffec24 in ?? ()
#54 0x00000000 in ?? ()
#55 0xbfffec28 in ?? ()
#56 0xbfffec2c in ?? ()
Back to top
View user's profile Send private message
Danilo
l33t
l33t


Joined: 05 Feb 2004
Posts: 747
Location: Italy

PostPosted: Sun May 08, 2005 6:23 pm    Post subject: Reply with quote

Sembra che non abbia compilato con le informazioni di debug.


int bar throw( barexception )

Cosa e' ? int bar?
se vuoi rilanciare usa

throw( barexception )
o altrimenti

throw(<classe barexception>(<i parametri di inizializzazione del costruttore di barexception>) )
Back to top
View user's profile Send private message
mrfree
Veteran
Veteran


Joined: 15 Mar 2003
Posts: 1303
Location: Europe.Italy.Sulmona

PostPosted: Sun May 08, 2005 7:44 pm    Post subject: Reply with quote

AlbertoSSj wrote:
mmmm, ma allora vale veramente la pena usare le eccezioni?

IMHO si... anche se C++, a differenza di Java, non usa le eccezioni verificate (se non ricordo male dovrebbe essere questo il nome di tale feature) attraverso un'oculata gestione delle eccezioni riesci ad ottenere una netta separazione della normale logica di programmazione dalla gestione degli errori creando codice in genere molto più manutenibile; non è questo uno degli scopi principali dell'introduzione delle eccezioni? :wink:
_________________
Please EU, pimp my country!

ICE: /etc/init.d/iptables panic
Back to top
View user's profile Send private message
Opossum
Tux's lil' helper
Tux's lil' helper


Joined: 21 Apr 2005
Posts: 104

PostPosted: Mon May 09, 2005 9:27 am    Post subject: Reply with quote

Fermo restando che il C++ non ti obbliga a gestire le eccezioni (al contrario di java) posso fare una domanda?
Perchè per compilare codice C++ usi gcc?
Quando lo faccio gcc si lamenta tantissimo, non sarebbe più opportuno compilarlo con g++?
Back to top
View user's profile Send private message
jikko
Apprentice
Apprentice


Joined: 17 Nov 2004
Posts: 192
Location: Pioltello Milano Italy

PostPosted: Mon May 09, 2005 2:09 pm    Post subject: Reply with quote

scusate ma
Code:
g++
non un link a dei paremtri specifici di
Code:
gcc
?
_________________
...Bill nostro che non sei nei cieli e non capisci il perche', e questa cosa ti sta sull ca@@o da morire, dacci oggi il nostro chip quotidiano...
(Luciano Ligabue, baby e' un mondo super)
Back to top
View user's profile Send private message
AlterX
l33t
l33t


Joined: 03 Apr 2004
Posts: 754
Location: rm -rf /*

PostPosted: Thu May 12, 2005 5:18 pm    Post subject: Re: [OT] C++, Gestire le eccezioni Reply with quote

AlbertoSSj wrote:
Ho fatto un po di prove, ed ho visto che gcc la dichiarazione delle throw() la ignora completamente.

Invece a me servirebbe un controllo stretto, cioè se qualcosa mi può lanciare eccezioni io lo devo sapere ( devo mettere mani in un magma di codice per la tesi :'( ).
Adesso infatti mi capitano degli abort random, che non so dove andare a beccare :\

tnk


In che senso gcc le ignora?!?!? 8O
Cmq usa g++ perchè il gcc, anche se compila C++, non gestisce automaticamente le operazioni specifiche del C++, che invece fa il g++.

Per quanto riquarda le dichiarazioni di funzioni con il throw() e throw(eccezione,...,...), significano rispettivamente che la prima non emette nessun tipo di eccezione, la seconda che emette solo quelle tra parentesi; se invece non viene messo nessun throw, la funzione può emettere qualsiasi eccezione.

Ciao
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Forum di discussione italiano All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum