Nilorea Library
C utilities for networking, threading, graphics
ex_exceptions.c
1
7#include "nilorea/n_log.h"
9
10int array_exception( int boolean )
11{
12 if( boolean )
13 {
14 n_log( LOG_NOTICE, "Throwed signal" );
16 }
17 n_log( LOG_NOTICE, "No signal Throwed !");
18
19 return 1 ;
20}
21
22int divzero_exception( int boolean )
23{
24 if( boolean )
25 {
26 n_log( LOG_NOTICE, "Throwed signal" );
28 }
29 n_log( LOG_NOTICE, "No signal Throwed !");
30
31 return 1 ;
32}
33
34int overflow_exception( int boolean )
35{
36 if( boolean )
37 {
38 n_log( LOG_NOTICE, "Throwed signal" );
40 }
41 n_log( LOG_NOTICE, "No signal Throwed !");
42
43 return 1 ;
44}
45
46int parsing_exception( int boolean )
47{
48 if( boolean )
49 {
50 n_log( LOG_NOTICE, "Throwed signal" );
52 }
53 n_log( LOG_NOTICE, "No signal Throwed !");
54
55 return 1 ;
56}
57
58int all_exception( int boolean )
59{
60 if( boolean )
61 {
62 n_log( LOG_NOTICE, "Throwed signal" );
64 }
65 n_log( LOG_NOTICE, "No signal Throwed !");
66
67 return 1 ;
68}
69
70
71int main( void )
72{
75
76 puts( "ArrayNoCatch" );
77 Try
78 {
79 n_log( LOG_INFO, "Trying signal:ARRAY_EXCEPTION false" );
80 array_exception( 0 );
81 n_log( LOG_NOTICE, "Trying signal:ARRAY_EXCEPTION true" );
82 array_exception( 1 );
83 }
84 EndTry ;
85 puts( "ArrayCatch" );
86 Try
87 {
88 n_log( LOG_NOTICE, "Trying signal:ARRAY_EXCEPTION false" );
89 array_exception( 0 );
90 n_log( LOG_NOTICE, "Trying signal:ARRAY_EXCEPTION true" );
91 array_exception( 1 );
92 }
94 {
95 n_log( LOG_NOTICE, "Caught signal ARRAY_EXCEPTION" );
96 }
97 EndTry ;
98 /***************************************************************/
99 puts( "DivZeroNoCatch" );
100 Try
101 {
102 n_log( LOG_NOTICE, "Trying signal:DIVZERO_EXCEPTION false" );
103 divzero_exception( 0 );
104 n_log( LOG_NOTICE, "Trying signal:DIVZERO_EXCEPTION true" );
105 divzero_exception( 1 );
106 }
107 EndTry ;
108 puts( "DivZeroCatch" );
109 Try
110 {
111 n_log( LOG_NOTICE, "Trying signal:DIVZERO_EXCEPTION false" );
112 divzero_exception( 0 );
113 n_log( LOG_NOTICE, "Trying signal:DIVZERO_EXCEPTION true" );
114 divzero_exception( 1 );
115 }
117 {
118 n_log( LOG_NOTICE, "Caught signal DIVZERO_EXCEPTION" );
119 }
120 EndTry ;
121 /***************************************************************/
122 Try
123 {
124 n_log( LOG_NOTICE, "Trying signal:OVERFLOW_EXCEPTION false" );
125 overflow_exception( 0 );
126 n_log( LOG_NOTICE, "Trying signal:OVERFLOW_EXCEPTION true" );
127 overflow_exception( 1 );
128 }
129 EndTry ;
130 Try
131 {
132 n_log( LOG_NOTICE, "Trying signal:OVERFLOW_EXCEPTION false" );
133 overflow_exception( 0 );
134 n_log( LOG_NOTICE, "Trying signal:OVERFLOW_EXCEPTION true" );
135 overflow_exception( 1 );
136 }
138 {
139 n_log( LOG_NOTICE, "Caught signal OVERFLOW_EXCEPTION " );
140 }
141 EndTry ;
142 /***************************************************************/
143 Try
144 {
145 n_log( LOG_NOTICE, "Trying signal:PARSING_EXCEPTION false" );
146 parsing_exception( 0 );
147 n_log( LOG_NOTICE, "Trying signal:PARSING_EXCEPTION true" );
148 parsing_exception( 1 );
149 }
150 EndTry ;
151 Try
152 {
153 n_log( LOG_NOTICE, "Trying signal:PARSING_EXCEPTION false" );
154 parsing_exception( 0 );
155 n_log( LOG_NOTICE, "Trying signal:PARSING_EXCEPTION true" );
156 parsing_exception( 1 );
157 }
159 {
160 n_log( LOG_NOTICE, "Caught signal PARSING_EXCEPTION" );
161 }
162 EndTry ;
163 /***************************************************************/
164 Try
165 {
166 n_log( LOG_NOTICE, "Trying signal:ALL_EXCEPTION false" );
167 all_exception( 0 );
168 n_log( LOG_NOTICE, "Trying signal:ALL_EXCEPTION true" );
169 all_exception( 1 );
170 }
171 EndTry ;
172 Try
173 {
174 n_log( LOG_NOTICE, "Trying signal:ALL_EXCEPTION false" );
175 all_exception( 0 );
176 n_log( LOG_NOTICE, "Trying signal:ALL_EXCEPTION true" );
177 all_exception( 1 );
178 }
180 {
181 n_log( LOG_NOTICE, "Caught signal matching GENERAL_EXCEPTION" );
182 }
183 EndTry ;
184
185
186 Try
187 {
188 n_log( LOG_NOTICE, "Trying mixed Try-Catch blocks, we are inside block 1" );
189 Try
190 {
191 n_log( LOG_NOTICE, "We're inside block 2" );
193
194 }
196 {
197 n_log( LOG_NOTICE, "Caught signal matching GENERAL_EXCEPTION inside block 2" );
198 }
199 EndTry ;
201 }
203 {
204 n_log( LOG_NOTICE, "Caught signal matching GENERAL_EXCEPTION inside block 1" );
205 }
206 EndTry ;
207
208 exit( 0 );
209}
210
#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.