Description | Exception handling |
Header file | LException.h |
Author | Camil Demetrescu |
Created | Jan 11, 2003 |
Last updated | Sep 27, 2003 |
Component LException defines macros for supporting in C the Try ... Throw ... Catch exception handling mechanism typical of C++/Java.
Constants |
|
LException_ID |
Types |
|
LException |
Macros |
|
Try |
Functions |
|
i1* LException_GetName (LException* inException) ui4 LException_GetCode (LException* inException) ui4 LException_GetLine (LException* inException) i1* LException_GetFileName (LException* inException) void LException_Dump (LException* inException) |
Macro | Arguments | Description |
Try | - | Like try in C++/Java. Important notice: NEVER use return, break, continue, goto to jump out of a Try { ... } block. This will corrupt immediately the execution environment, causing the program to crash. |
Throw | ui4 inExceptionCode | Like throw in C++/Java. Raises an exception with code inExceptionCode. |
Catch | LException* inException | Like catch in C++/Java. Argument inException is assigned with the address of the thrown exception. Differently from C++, only one catch block is allowed. Notice: objects of type LException do not need to be deallocated explicitly. |
CatchAny | - | Like Catch, but it does not require to specify an argument. |
Rethrow | - |
Used in a Catch (or CatchAny) block to rethrow the exception exactly as it was caught. It is useful in a CatchAny block where the pointer to the thrown exception is unknown. Differently from Throw, it does not generate a new exception, but it rethrows an exception that was just caught. |
Function | Arguments | Description | Returns | Throws |
GetName | LException* inException | Returns the exception name stored in object inException: e.g., if exception inException is thrown with Throw(LDebug_INTERNAL_ERROR), then GetName returns a pointer to the C string "LDebug_INTERNAL_ERROR". |
i1* Exception name |
- |
GetCode | LException* inException | Returns the exception code stored in object inException: e.g., if exception inException is thrown with Throw(LDebug_INTERNAL_ERROR), then GetCode returns the integer value LDebug_INTERNAL_ERROR. |
ui4 Exception code |
|
GetFileName | LException* inException | Accesses the line number in the source file where object inException was created via Throw : e.g., if exception inException is thrown at line 233, then GetFileName returns 233. |
i1* Line number in source code where exception was generated |
- |
GetFileName | LException* inException | Accesses the name of the source file where object inException was created via Throw : e.g., if exception inException is thrown in file LMemory.c, then GetFileName returns a pointer to the C string "LMemory.c". |
i1* File name of source code where exception was generated |
- |
Dump | LException* inException | Sends information about exception inException to the message console. | - | - |
... theBlock = NULL; Try { if (theSize>255) Throw(LDebug_INTERNAL_ERROR);
theBlock = LMemory_Malloc(theSize); ... LMemory_Free(&theBlock); } CatchAny { /* cleanup */ if (theBlock!=NULL) LMemory_Free(&theBlock); Rethrow; }