> 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

Mon, 10 Mar 2003 14:37:35 -0500
"Merlin Moncure" <merlin.moncure@rcsonline.com>
Re: [GENERAL] division by zero
"Merlin Moncure" <merlin.moncure@rcsonline.com> writes:
> After fighting with the docs a little bit, here is how to handle an
> int/0 in a C application.  

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

This is not C.

			regards, tom lane

Mon, 10 Mar 2003 15:13:01 -0500
Tom Lane <tgl@sss.pgh.pa.us>
Re: [GENERAL] division by zero 