L
leelaprasad.gorrepati
We had written an application in which we create worker thread.
So the main thread will create the worker thread. After some time
the child thread(Worker thread) will call pthread_exit().
This function was written in try{} and there occured an and is handled
in catch(...) handler.
Can any one tell me the reason why the exception occured.
This is on Linux platform.
The Implementation of the code is as follows:
This is a simple form of our application, Try to run this small piece
of code.
The output of this is " FATAL: exception not rethrown
Inside catch... Aborted"
#include <stdio.h>
#include <stdlib.h>
#include <stdexcept.h>
#include <pthread.h>
using namespace std;
void print_message_function( void *ptr );
int main()
{
pthread_t thread1;
char *message1 = "Thread 1";
int iret1;
iret1 = pthread_create( &thread1, NULL, (void*(*)
(void*))&print_message_function, (void*) message1);
pthread_join( thread1, NULL);
}
void print_message_function( void *ptr )
{
char *message;
message = (char *) ptr;
try
{
pthread_exit((void*) 1);
}
catch(...)
{
printf("Inside catch...\n");
}
}
So the main thread will create the worker thread. After some time
the child thread(Worker thread) will call pthread_exit().
This function was written in try{} and there occured an and is handled
in catch(...) handler.
Can any one tell me the reason why the exception occured.
This is on Linux platform.
The Implementation of the code is as follows:
This is a simple form of our application, Try to run this small piece
of code.
The output of this is " FATAL: exception not rethrown
Inside catch... Aborted"
#include <stdio.h>
#include <stdlib.h>
#include <stdexcept.h>
#include <pthread.h>
using namespace std;
void print_message_function( void *ptr );
int main()
{
pthread_t thread1;
char *message1 = "Thread 1";
int iret1;
iret1 = pthread_create( &thread1, NULL, (void*(*)
(void*))&print_message_function, (void*) message1);
pthread_join( thread1, NULL);
}
void print_message_function( void *ptr )
{
char *message;
message = (char *) ptr;
try
{
pthread_exit((void*) 1);
}
catch(...)
{
printf("Inside catch...\n");
}
}