Pagina 1 di 1
c++ & try catch & segmentation fault
Inviato: ven 15 mag 2009, 9:30
da tgmx
Ciao Ragazzi,
non riesco a capire il funzionamento di try catch in c++ per catturare un segmentation fault ed evitare il crash del programma.
L'applicazione è in qt4 ma non credo sia importante, la parte di codice su cui sto facendo delle prove è:
Codice: Seleziona tutto
....
....
try
{
QString *s;
*s="ciao";
}
catch(...)
{
std::cout << "errore" << std::endl;
}
....
....
ma il programma continua a crashare.
Dove sbaglio?
Re: c++ & try catch & segmentation fault
Inviato: ven 15 mag 2009, 9:58
da d4z_c0nf
Ma quella stampa che hai messo nel catch si verifica?
rock
Re: c++ & try catch & segmentation fault
Inviato: ven 15 mag 2009, 10:03
da tgmx
d4z_c0nf ha scritto:Ma quella stampa che hai messo nel catch si verifica?
rock
No, va in segmentation fault quando passa per
Re: c++ & try catch & segmentation fault
Inviato: ven 15 mag 2009, 10:04
da d4z_c0nf
tgmx ha scritto:d4z_c0nf ha scritto:Ma quella stampa che hai messo nel catch si verifica?
rock
No, va in segmentation fault quando passa per
Scusa, ma sei sicuro che si possa gestire il segfault?
rock
Re: c++ & try catch & segmentation fault
Inviato: ven 15 mag 2009, 10:06
da tgmx
d4z_c0nf ha scritto:
Scusa, ma sei sicuro che si possa gestire il segfault?
rock
No, infatti pare non funzioni, più che altro ci speravo dato che altrimenti è un bel problema...
Re: c++ & try catch & segmentation fault
Inviato: ven 15 mag 2009, 10:09
da d4z_c0nf
tgmx ha scritto:d4z_c0nf ha scritto:
Scusa, ma sei sicuro che si possa gestire il segfault?
rock
No, infatti pare non funzioni, più che altro ci speravo dato che altrimenti è un bel problema...
Cercavo un po' in rete, e trovo opinioni contrastanti, chi dice non si possa gestire chi come questo utilizza i segnali (metodo *nix), ma utilizzando C.
http://forum.html.it/forum/showthread/t-636791.html
Poi dice che si dovrebbe poter fare con i blocchi try catch in c++.
Ma tu che tipo di eccezione hai specificato nel catch?
rock
Re: c++ & try catch & segmentation fault
Inviato: ven 15 mag 2009, 10:20
da tgmx
d4z_c0nf ha scritto:tgmx ha scritto:d4z_c0nf ha scritto:
Scusa, ma sei sicuro che si possa gestire il segfault?
rock
No, infatti pare non funzioni, più che altro ci speravo dato che altrimenti è un bel problema...
Cercavo un po' in rete, e trovo opinioni contrastanti, chi dice non si possa gestire chi come questo utilizza i segnali (metodo *nix), ma utilizzando C.
http://forum.html.it/forum/showthread/t-636791.html
Poi dice che si dovrebbe poter fare con i blocchi try catch in c++.
Ma tu che tipo di eccezione hai specificato nel catch?
rock
Per quel poco che ho capito sembra che " catch( ... ) " serva a catturare tutte le eccezioni.
Re: c++ & try catch & segmentation fault
Inviato: ven 15 mag 2009, 10:25
da d4z_c0nf
Sì, così pare, scusa.
rock
Re: c++ & try catch & segmentation fault
Inviato: ven 15 mag 2009, 13:21
da raffaele181188
http://www.velocityreviews.com/forums/t ... dling.html
Premetto che non conosco una mazza di C++
ma credo che un SegmentationFault non sia proprio una Eccezione, ecco perchè non viene catchata (infatti sembra che non entri proprio nel catch). Per lanciare una eccezione 'catchabile' serve un throw, ma un segfault non causa proprio nessun throwing perchè è un errore al di fuori del controllo del programma, non un'eccezione
Forse

Re: c++ & try catch & segmentation fault
Inviato: ven 15 mag 2009, 14:36
da shark1500
Il segfolt e` un segnale del kernel che stronca il programma (se non sbaglio SIGSEGV). Come tutti i segnali si possono catturare in C, non so in C++ (penso proprio di si`), ma non con le eccezioni
Re: c++ & try catch & segmentation fault
Inviato: ven 15 mag 2009, 15:34
da tgmx
Credo che sia come avete detto...
Al di la del fatto che non ho mai avuto a che fare con la gestione dei segnali in generale, secondo voi è possibile gestire il "segmentation fault" ed impedire che il programma vada in crash?
Re: c++ & try catch & segmentation fault
Inviato: ven 15 mag 2009, 17:05
da raffaele181188
Nel link che ti ho postato prima c'era scritto che i segfault non vanno ignorati perchè da quel punto in avanti il programma non si sa come va a finire

In particolare si diceva che (come ha scritto anche shark) il segnale puoi catturarlo, ma a quel punto è meglio che "salvi il salvabile" (su disco intendo) e poi esci
Re: c++ & try catch & segmentation fault
Inviato: ven 15 mag 2009, 17:14
da tgmx
raffaele181188 ha scritto:Nel link che ti ho postato prima c'era scritto che i segfault non vanno ignorati perchè da quel punto in avanti il programma non si sa come va a finire

In particolare si diceva che (come ha scritto anche shark) il segnale puoi catturarlo, ma a quel punto è meglio che "salvi il salvabile" (su disco intendo) e poi esci
... era come temevo...
Grazie a tutti!