Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content
/ except-C Public

利用setjmp()/longjmp()实现的C简易异常处理机制

Notifications You must be signed in to change notification settings

napw/except-C

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 

Repository files navigation

except-C

利用setjmp()/longjmp()实现的C简易异常处理机制

example

    #include "exceptC.h"
    //define global variables as exception instance
    //except-C use the memory address to identified exception instance
    ExceptMessage except1 = {"except1"};
    ExceptMessage except2 = {"except2"};
    ExceptMessage except3 = {"except3"};
    
    int func4(int x){
        //THROW exception when necessary
        THROW(except1);
        return x;
    }

    void func3(){
        //the TRACK macro are used to generate backtrace infomation
        //only trival function call like "func()" or assignment like "v=func()" are valid
        TRACK(func4(6))
    }

    void func2(){
        TRACK(func3())
    }

    int func1(){
        TRACK(func2())
        return 88;
    }


    int main() {
        int x;
        TRY
            TRY
                TRACK(x=func1())
            CATCH(except1)
            ENDTRY
        CATCH(except1)
            printf("except1 caught\n");
        CATCH(except2)
            printf("except1 caught\n");
        FINALLY
            printf("finally block aways be executed\n");
        ENDTRY
        printf("%d",x);
    }

About

利用setjmp()/longjmp()实现的C简易异常处理机制

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages