exception propagation for a distributed call



I need to implement something that has probably already been done
hundreds of times. I have to implement some distributed calls (i.e.,
across sockets, arinc ports, separate memory partitions, etc.). I need
to trap any exception that may occur, and re-raise it for the caller,
like CORBA does (though I cannot use CORBA, RPC, etc.). I also do not
want to replicate a lot of code in each exception block. What I have
so far is to create a procedure that will take an exception occurence
as a parameter and call it in each exception block at a "when others
=>" arm. The function returns an enumeration value for the exception
which can be marshalled across and re-raised via a case statement.
What I cannot figure out is how to convert the occurrence in a portable
way so I do not have to use compiler-specific features. I know I can
convert it to an exception_id, but how do I determine which exception
the id is for? Is there a way to get the id of an exception without
raising it? Or, is there a better way

Thanks,

REH

.