This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: Re: g++ & non-call-exceptions & sigsetjmp
- From: Devrat Mittal <u02113 at cs dot unipune dot ernet dot in>
- To: eljay at adobe dot com, <gcc-help at gcc dot gnu dot org>
- Date: Wed, 24 Mar 2004 20:30:22 +0530 (IST)
- Subject: Re: Re: g++ & non-call-exceptions & sigsetjmp
On Wed, 24 Mar 2004, Eljay Love-Jensen wrote:
> Hi Devrat,
>
> I believe it is impossible to throw out of a signal handler. Or out of any
> kind of callback (e.g., X11). Any exception that hits a C-barrier will
> terminate the application.
>
> You'll have to figure out a different mechanism to detect the signal
> condition in your program. Perhaps by setting a volatile global variable
> within the signal handler, and checking that global at opportune times in
> your regular code.
>
> HTH,
> --Eljay
>
Hi eljay,
But guy, I said I compiled that code already with a throw inside
of the exception handler. The compile command was given as follows:
g++ test.c -g -Wall -fnon-call-exceptions
What I am looking forward to is this:
Java generates for example some kind of arithmetic exceptions when
say "division by zero" happens in the program. Now in C++, such an
exception cannot be caught in "catch" blocks. Such exceptions
can only be caught inside of signal handlers.
So we can just throw from within the signal handler as the program
i enclosed in the post does & catch it from main (which again the program
is able to.).
The code works fine on my Redhat 8.0 linux box & surely does
convince me that exceptions can be thrown from signal handlers & still be
caught elsewhere in the code.
If you dont mind, plz run the program & see what happens.(under
g++ with the options -fnon-call-exceptions). I really would like to know
ur comments after the run.
Thanks,
regards
--
Devrat Mittal
M.tech 2nd year
Roll no. 2002301