Difference between revisions of "FSO Error Handling"
From FreeSpace Wiki
(→C++ Exceptions) |
(→General: updates to match reality) |
||
Line 26: | Line 26: | ||
* 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 33: | ||
* 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 52: | ||
|- | |- | ||
| Verify( ??? ); || Yes || | | Verify( ??? ); || Yes || | ||
− | * Like an Assert | + | * Like an Assert, but works in both Release & Debug |
|- | |- | ||
| VerifyEx( ??? ); || Yes || | | VerifyEx( ??? ); || Yes || | ||
Line 59: | Line 59: | ||
| 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 |
|} | |} | ||
Revision as of 00:32, 6 December 2015
Contents
Freespace2 Open Error Handling
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.