Nilorea Library
C utilities for networking, threading, graphics
ex_exceptions.c

Nilorea Library exception api test.

Nilorea Library exception api test

Author
Castagnier Mickael
Version
1.0
Date
24/10/2018
#include "nilorea/n_log.h"
int array_exception( int boolean )
{
if( boolean )
{
n_log( LOG_NOTICE, "Throwed signal" );
}
n_log( LOG_NOTICE, "No signal Throwed !");
return 1 ;
}
int divzero_exception( int boolean )
{
if( boolean )
{
n_log( LOG_NOTICE, "Throwed signal" );
}
n_log( LOG_NOTICE, "No signal Throwed !");
return 1 ;
}
int overflow_exception( int boolean )
{
if( boolean )
{
n_log( LOG_NOTICE, "Throwed signal" );
}
n_log( LOG_NOTICE, "No signal Throwed !");
return 1 ;
}
int parsing_exception( int boolean )
{
if( boolean )
{
n_log( LOG_NOTICE, "Throwed signal" );
}
n_log( LOG_NOTICE, "No signal Throwed !");
return 1 ;
}
int all_exception( int boolean )
{
if( boolean )
{
n_log( LOG_NOTICE, "Throwed signal" );
}
n_log( LOG_NOTICE, "No signal Throwed !");
return 1 ;
}
int main( void )
{
puts( "ArrayNoCatch" );
{
n_log( LOG_INFO, "Trying signal:ARRAY_EXCEPTION false" );
array_exception( 0 );
n_log( LOG_NOTICE, "Trying signal:ARRAY_EXCEPTION true" );
array_exception( 1 );
}
puts( "ArrayCatch" );
{
n_log( LOG_NOTICE, "Trying signal:ARRAY_EXCEPTION false" );
array_exception( 0 );
n_log( LOG_NOTICE, "Trying signal:ARRAY_EXCEPTION true" );
array_exception( 1 );
}
{
n_log( LOG_NOTICE, "Caught signal ARRAY_EXCEPTION" );
}
/***************************************************************/
puts( "DivZeroNoCatch" );
{
n_log( LOG_NOTICE, "Trying signal:DIVZERO_EXCEPTION false" );
divzero_exception( 0 );
n_log( LOG_NOTICE, "Trying signal:DIVZERO_EXCEPTION true" );
divzero_exception( 1 );
}
puts( "DivZeroCatch" );
{
n_log( LOG_NOTICE, "Trying signal:DIVZERO_EXCEPTION false" );
divzero_exception( 0 );
n_log( LOG_NOTICE, "Trying signal:DIVZERO_EXCEPTION true" );
divzero_exception( 1 );
}
{
n_log( LOG_NOTICE, "Caught signal DIVZERO_EXCEPTION" );
}
/***************************************************************/
{
n_log( LOG_NOTICE, "Trying signal:OVERFLOW_EXCEPTION false" );
overflow_exception( 0 );
n_log( LOG_NOTICE, "Trying signal:OVERFLOW_EXCEPTION true" );
overflow_exception( 1 );
}
{
n_log( LOG_NOTICE, "Trying signal:OVERFLOW_EXCEPTION false" );
overflow_exception( 0 );
n_log( LOG_NOTICE, "Trying signal:OVERFLOW_EXCEPTION true" );
overflow_exception( 1 );
}
{
n_log( LOG_NOTICE, "Caught signal OVERFLOW_EXCEPTION " );
}
/***************************************************************/
{
n_log( LOG_NOTICE, "Trying signal:PARSING_EXCEPTION false" );
parsing_exception( 0 );
n_log( LOG_NOTICE, "Trying signal:PARSING_EXCEPTION true" );
parsing_exception( 1 );
}
{
n_log( LOG_NOTICE, "Trying signal:PARSING_EXCEPTION false" );
parsing_exception( 0 );
n_log( LOG_NOTICE, "Trying signal:PARSING_EXCEPTION true" );
parsing_exception( 1 );
}
{
n_log( LOG_NOTICE, "Caught signal PARSING_EXCEPTION" );
}
/***************************************************************/
{
n_log( LOG_NOTICE, "Trying signal:ALL_EXCEPTION false" );
all_exception( 0 );
n_log( LOG_NOTICE, "Trying signal:ALL_EXCEPTION true" );
all_exception( 1 );
}
{
n_log( LOG_NOTICE, "Trying signal:ALL_EXCEPTION false" );
all_exception( 0 );
n_log( LOG_NOTICE, "Trying signal:ALL_EXCEPTION true" );
all_exception( 1 );
}
{
n_log( LOG_NOTICE, "Caught signal matching GENERAL_EXCEPTION" );
}
{
n_log( LOG_NOTICE, "Trying mixed Try-Catch blocks, we are inside block 1" );
{
n_log( LOG_NOTICE, "We're inside block 2" );
}
{
n_log( LOG_NOTICE, "Caught signal matching GENERAL_EXCEPTION inside block 2" );
}
}
{
n_log( LOG_NOTICE, "Caught signal matching GENERAL_EXCEPTION inside block 1" );
}
exit( 0 );
}
#define Throw(X)
Macro helper for adding exception throwing in custom functions.
Definition: n_exceptions.h:89
#define OVERFLOW_EXCEPTION
Possibly Throwed value, we checked an overflow in our arrays.
Definition: n_exceptions.h:32
#define Try
Macro for replacing try.
Definition: n_exceptions.h:57
#define GENERAL_EXCEPTION
General exception, we just detected an error an decided to go back where we're safe.
Definition: n_exceptions.h:37
#define PARSING_EXCEPTION
Possibly Throwed value, we checked an error during a char * parsing.
Definition: n_exceptions.h:34
#define ARRAY_EXCEPTION
Possibly Throwed value, we checked an out of bound operation.
Definition: n_exceptions.h:28
#define Catch(X)
Macro for replacing catch.
Definition: n_exceptions.h:67
#define DIVZERO_EXCEPTION
Possibly Throwed value, we check a divide by zero operation.
Definition: n_exceptions.h:30
#define EndTry
Macro helper for closing the try-catch block.
Definition: n_exceptions.h:83
#define n_log(__LEVEL__,...)
Logging function wrapper to get line and func.
Definition: n_log.h:74
#define LOG_DEBUG
debug-level messages
Definition: n_log.h:66
#define LOG_STDERR
internal, default LOG_TYPE
Definition: n_log.h:31
void set_log_level(const int log_level)
Set the global log level value ( static int LOG_LEVEL )
Definition: n_log.c:97
#define LOG_NOTICE
normal but significant condition
Definition: n_log.h:62
#define LOG_INFO
informational
Definition: n_log.h:64
Exception management for C.
Generic log system.