File:  [CSRG BSD Unix] / 43BSD / contrib / xns / xnslib / except / test.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 16:12:54 2018 UTC (8 years, 1 month ago) by root
Branches: MAIN, BSD
CVS tags: HEAD, BSD43
BSD 4.3

/*
 * a test program for exception handling - cc test.c -lexcept
 */

#include <stdio.h>
#include <except.h>

#define	EX_EOF	-2
#define	EX_ZERO	-3

main()
{
	ExceptMode = EX_MODE_REPORT | EX_MODE_ABORT;

	printf("With handler\n");
	DURING
	    foo(3);
	HANDLER
	    switch (Exception.Code) {
	    	case EX_EOF:
			printf("End of input file\n");
			break;

		default:
			RERAISE;
			break;
	    }
	END_HANDLER;
	
	printf("Without handler\n");
	foo(3);
}

foo(i)
int i;
{
	char line[64];
	int x;

	while (--i) {
	    printf("Enter integer> ");
	    clearerr(stdin);
	    if (gets(line) == NULL) raise(EX_EOF, "End of File");
	    sscanf(line,"%d", &x);
	    DURING
	    	bar(x);
	    HANDLER
	       	switch (Exception.Code) {
	       	    case EX_ZERO:
		    	printf("%s\n", Exception.Message);
			E_RETURN_VOID;
		    default: RERAISE; break;
	      	}	    	
	    END_HANDLER
	}
}

bar(x)
int x;
{
	if (x == 0) raise(EX_ZERO, "Division by Zero");
	
	printf("1/%d = %f\n",x,1.0/(x+0.0));
}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.