Difference between revisions of "FSO Error Handling"
From FreeSpace Wiki
(→C++ Exceptions) |
m (formatting and category added) |
||
(One intermediate revision by one other user not shown) | |||
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 26: | Line 24: | ||
* Used for verbose logging that would otherwise clog up the fs2_open.log | * Used for verbose logging that would otherwise clog up the fs2_open.log | ||
|- | |- | ||
− | | Warning( LOCATION, printf-formatted-message | + | | Warning( LOCATION, printf-formatted-message ); || No || |
* Something has gone wrong, but either it's recoverable or it may not be critical. | * Something has gone wrong, but either it's recoverable or it may not be critical. | ||
* FSO continues to execute. | * FSO continues to execute. | ||
Line 33: | Line 31: | ||
* The 1st argument, LOCATION is required verbatim | * The 1st argument, LOCATION is required verbatim | ||
|- | |- | ||
− | | WarningEx( LOCATION, printf-formatted-message | + | | WarningEx( LOCATION, printf-formatted-message ); || No || |
* Same as warning, except it will only trigger if the command line param "-extra_warn" is set | * Same as warning, except it will only trigger if the command line param "-extra_warn" is set | ||
|- | |- | ||
− | | Error( LOCATION, printf-formatted-message | + | | Error( LOCATION, printf-formatted-message ); || Yes || |
* Something has gone horribly wrong and it's not "safe" to continue. | * Something has gone horribly wrong and it's not "safe" to continue. | ||
* FSO exits. | * FSO exits. | ||
Line 52: | Line 50: | ||
|- | |- | ||
| Verify( ??? ); || Yes || | | Verify( ??? ); || Yes || | ||
− | * Like an Assert | + | * Like an Assert, but works in both Release & Debug |
|- | |- | ||
| VerifyEx( ??? ); || Yes || | | VerifyEx( ??? ); || Yes || | ||
Line 59: | Line 57: | ||
| Int3(); || No || | | Int3(); || No || | ||
* very old, don't add any more of these to FSO | * very old, don't add any more of these to FSO | ||
− | * | + | * On Windows it stops execution and gives a coder the chance to attach a debugger |
− | * On other platforms | + | * On other platforms it acts like an Error |
|} | |} | ||
− | + | == 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.