Giter VIP home page Giter VIP logo

trycatchc's Introduction

TryCatchC

TryCatchC is a C module implementing the try/catch mechanism available in other programming languages but missing in C. It is based on the setjmp/longjmp functions. It supports recursive incursion of try/catch blocks, forward of uncaught exception to the upper level try/catch block if any, exception raised by signals like SIGSEV (non ANSI C feature), and user-defined exceptions.

Usage

  • Download and add the files trycatch.c and trycatch.h to your project.
  • Modify the list of predefined exceptions in enum TryCatchException in trycatch.h according to your needs, or create your own user-defined exceptions as explained in trycatch.h.
  • Optionally add support for signals other than SIGSEV by referring to TryCatchInitHandlerSigSegv() and TryCatchSigSegvHandler().
  • Use it in your project, for example as follows:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include "trycatch.h"
int main() {

  Try {

    if (isnan(0./0.)) Raise(TryCatchException_NaN);

  } Catch (TryCatchException_NaN) {

    printf("Caught exception NaN\n");

  } EndTry;

  return 0;
}
  • Compile as follows:
	gcc -c main.c
	gcc -c trycatch.c
	gcc main.o trycatch.o -lm -o main
  • Run with ./main. Output:
Caught exception NaN

More examples can be found in main.c of this repository.

License

TryCatchC, a C implementation of the try/catch mechanism in C Copyright (C) 2021 Pascal Baillehache

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

trycatchc's People

Contributors

bayashipascal avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.