> The big question is how to fix this on Win32.  Is a test in the
integer
> division routines enough?  Is there a signal to catch on Win32?

After fighting with the docs a little bit, here is how to handle an
int/0 in a C application.  

#include "stdio.h"
#include "excpt.h"
#include "windows.h"

int HandleException( int iExcept );

int main(int argc, char* argv[])
{
        int b = 0;
        int a;

        puts("hello");
        __try
        {
                puts("in try");
                a = 0/b;
        }
        __except( HandleException(GetExceptionCode()) )
        {
                puts("in except");
        } 
        
        puts("world");
}

int HandleException( int iExcept )
{
        if (iExcept == EXCEPTION_INT_DIVIDE_BY_ZERO) 
        {       
                puts("Handled int/0 exception");
                return EXCEPTION_EXECUTE_HANDLER;
        }
        /* call the system handler and crash */
        return EXCEPTION_CONTINUE_SEARCH ;      
}

Merlin

---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

Reply via email to