C语言模拟java、c#使用try catch

<span style="font-size:18px;">#include <setjmp.h>
#include <signal.h>
#include <sys/types.h>
#include <stdio.h>
#include <string.h>


void exce_handle(int sig);


#define try signal(SIGSEGV, exce_handle);\
        if (!sigsetjmp(env, -1))


#define eceptionPrint(format,...)\
 do {\
        printf("exception !!!!:\n");\
        printf("%s%s,%s([%s]:line:%d)\n",__DATE__,__TIME__,__FILE__,__FUNCTION__,__LINE__);\
        printf("reason:");\
        printf(format,##__VA_ARGS__); \
        printf("\n"); \
 } while (0)


#define catch else
 
typedef struct 
{
    int  sig;
    char reason[256];
} exception;
 
static sigjmp_buf env;
static exception e;
 
void exce_handle(int sig)
{
    e.sig = sig;
    snprintf(e.reason,256,"The Exception is %d",sig);
    siglongjmp(env, -1);
}
int main()
{
    int *a = NULL;
    try 
    {
        *a = 0;
    } 
    catch 
    {
        eceptionPrint("%s",e.reason);
    }
    return 0;
}</span>

你可能感兴趣的:(C语言模拟java、c#使用try catch)