Difference between revisions of "FSO Error Handling"
From FreeSpace Wiki
(→General: updates to match reality) |
m (formatting and category added) |
||
Line 1: | Line 1: | ||
− | |||
− | |||
{{note | Needs more details! }} | {{note | Needs more details! }} | ||
This is meant to assist coders in figuring out how errors in FSO should be handled. | This is meant to assist coders in figuring out how errors in FSO should be handled. | ||
− | + | == General == | |
There are several macros defined for error handling (see globalincs/pstypes.h). | There are several macros defined for error handling (see globalincs/pstypes.h). | ||
Line 63: | Line 61: | ||
|} | |} | ||
− | + | == LUA Scripting == | |
While all the FSO error handling can be used in LUA, it's preferred to use the following where possible. | While all the FSO error handling can be used in LUA, it's preferred to use the following where possible. | ||
Line 84: | Line 82: | ||
− | + | == Table Parsing == | |
tbc | tbc | ||
Line 90: | Line 88: | ||
− | + | == C++ Exceptions == | |
Exceptions are relatively rare in FSO (see pilotcode for one exception (hardy-har-har)), I don't believe there's any formal exception handling scheme. | Exceptions are relatively rare in FSO (see pilotcode for one exception (hardy-har-har)), I don't believe there's any formal exception handling scheme. | ||
+ | |||
+ | [[Category:Source Code Project]] |
Latest revision as of 11:59, 14 September 2021
Note: Needs more details!
This is meant to assist coders in figuring out how errors in FSO should be handled.
General
There are several macros defined for error handling (see globalincs/pstypes.h).
One of the 1st concepts to understand is that some errors in trigger in DEBUG builds, others occur in both DEBUG and RELEASE.
Most of these can be used anywhere within the FSO codebase.
Name | In Release? | Description |
---|---|---|
mprintf(( printf-formatted-message-needs-\n )); | No |
Warning: Dynamically allocates memory (SCP_string) so don't use it inside memory management functions
|
nprintf(( TYPE, printf-formatted-message-needs-\n )); | No |
|
Warning( LOCATION, printf-formatted-message ); | No |
|
WarningEx( LOCATION, printf-formatted-message ); | No |
|
Error( LOCATION, printf-formatted-message ); | Yes |
|
Assert( statement ); | No |
|
Assertion( statement, printf-formatted-message-needs-\n ); | No |
|
Verify( ??? ); | Yes |
|
VerifyEx( ??? ); | Yes |
|
Int3(); | No |
|
LUA Scripting
While all the FSO error handling can be used in LUA, it's preferred to use the following where possible.
In parse/lua.cpp.
Name | In Release? | Description |
---|---|---|
LuaError( LuaObject, printf-formatted-message ); | ? |
|
ade_set_error( LuaObject, return-value-type, return-value ); | ? |
|
Table Parsing
tbc (I think there's some extra error handling options in here)
C++ Exceptions
Exceptions are relatively rare in FSO (see pilotcode for one exception (hardy-har-har)), I don't believe there's any formal exception handling scheme.