Raising Exceptions and Reporting Errors

There are times when things go wrong. It's a painful time, but it need not be. Ferite provides a means of raising exceptions to force a programmer to deal with errors but also a means of quietly setting the error information allowing the programmer to check for non-fatal things.

It is considered good form to return error values from a function call. This is the route you should take if you require the reporting of errors. For instance if you have a function that connects to a resource and returns an object to interact with that resource, it makes sense to return a null object [FE_RETURN_NULL_OBJECT] if that resource cant be obtained.

Sometimes this is not possible to return an error value. In these situations it is considered good form to use the function ferite_set_error [it's prototype is below]. This sets the err script object's values, but does not raise an exception. This allows the programmer to ignore things if needs be. It takes a number of parameters, the first is the script you are running in, the second is the error number and the last is the format of a string [same as printf] describing the error that has occured. It should be documented that this is the case such that the programmer knows what to look for.

    void ferite_set_error( FeriteScript *script, int num, char *fmt, ... );
    			

When all hope is lost, there are times when an exception needs to be rasied because some has gone completely wrong. This is done by calling ferite_error. You can pass it the error number and the message just like ferite_set_error.

    void ferite_error( FeriteScript *script, int num, char *fmt, ... );
    			

Sometimes it is nice to warn people about not so bad things, and as such there is a function ferite_warning which will place a warning on the script.

    void ferite_warning( FeriteScript *script, char *errormsg, ... );