‘errorcode’ Functions
Jancy provides syntactic sugar over good old C-style error code check model. It looks just like throwing and catching exceptions and frees the developer from the routine of constantly checking for error codes.
This model allows the developer to choose between using error code checks or exception semantics when calling the very same function depending on what is more appropriate or convenient in each particular case!
A function marked by the errorcode
modifier will have its return value interpreted as an error code. Intuitive error conditions are assumed: false
for booleans, null
for pointers and -1
for integers. Other types will be cast to bool
for error condition checking.
bool errorcode bar( int a, int b ) { printf("bar(%d, %d)\n", a, b); if (a > b) return false; // fail // ... return true; } int foo() { // use 'try' operator to handle the error code manually... bool result = try bar(1, -150); if (!result) { printf("bar failed\n"); // handle the error... } bar(2, 3); bar(5, 4); // will fail // ... return 0; // ...or use the 'catch' label to handle it in with exception semantics catch: printf("exception was caught\n"); return -1; }
Note that the both try
and catch
constructs will also properly handle other, non-errorcode
exceptions, such as null
pointer access, division by zero and so on.