about exception type issuse

Guan Jun He gjhe@novell.com
Tue Feb 17 08:04:00 GMT 2009


Dear All

    I write the following code,and get the an unknow exception.Would any
body tell me what the exception is?why it can be catched by
catch(...),but can not be catched by user's code.

best,
Guanjun

code:
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdexcept>
#include <ios>
#include <fstream>
#include <csignal>
#include <iostream>
#include <exception>
#include <exception_defines.h>
#include <unwind.h>
typedef unsigned _Unwind_Exception_Class
__attribute__((__mode__(__DI__)));

void *thread(void*)
{
        int i;
        pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, 0);

pthread_setcanceltype(/*PTHREAD_CANCEL_ASYNCHRONOUS*/PTHREAD_CANCEL_DEFERRED, 0);
        try
        {
                for(i=0;/*i<3*/;i++) {
                        //pthread_testcancel();
                        printf("This is a pthread.\n");
                        //pthread_testcancel();
                }
        }catch(.../*_Unwind_Reason_Code &n*//*struct _Unwind_Exception
&b*//*_Unwind_Exception_Class &u*/)
        {
                printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^This
is the child thread: \n");/*%d .\n", n);*/
                //throw;
                //a.what();
                /*do nothing*/
        }
        return 0;
}

int main(void)
{
        pthread_t id;
        int ret;
        ret=pthread_create(&id,NULL, thread,NULL);
        if(ret!=0){
                printf ("Create pthread error!\n");
                exit (1);
        }
        usleep(100);
        printf("********************This is the main thread.\n");
        pthread_cancel(id);
        printf("********************This is the main thread.\n");
        //pthread_join(id,0);
        return (0);
}








More information about the Gcc-help mailing list