From Bohemia Interactive Community
Jump to navigation Jump to search
Introduced with Armed Assault version 1.001.00
Hover & click on the images for descriptions


Defines a try-catch structure. This sets up an exception handling block. Any thrown exception in a try block is caught in a catch block. The structured exception block has the following form: try { /* block that can throw exception */ } catch { /* block that processes the exception. Exception is described in the _exception variable */ };


try code
code: Code
Return Value:
Exception Type

Alternative Syntax

args try code Since Arma 3 v1.53.133045
args: Anything - passed arguments, will be put in _this variable inside the "code"
code: Code
Return Value:
Exception Type


Example 1:
try {throw "invalid argument"} catch {hint str _exception};
Example 2:
since Arma 3 v1.53.133045: 123 try {if (_this != 123) throw "invalid argument"} catch {hint str _exception};
Example 3:
The correct usage of shorthand alt syntax: try { if (a > b) throw "Error: some error"; // OK // The command argument is static } catch { hint str _exception; }; try { _someFunc = { ..... }; if (a > b) throw (call _someFunc); // NOT OK // The command argument is dynamic // _someFunc is called first to get the value regardless of (a > b) outcome } catch { hint str _exception; }; try { _someFunc = { ..... }; if (a > b) then {throw (call _someFunc)}; /// OK // The command argument is dynamic // _someFunc is only called when (a > b) is true } catch { hint str _exception; };

Additional Information

See also:
Exception handlingthrowcatch
Program Flow


Only post proven facts here. Report bugs on the Feedback Tracker and discuss on the Arma Discord or on the Forums.


Bottom Section

Posted on June 9, 2015 - 20:52 (UTC)
Killzone Kid
Do not expect this behave like Javascript try catch and ignore all errors. But it does have one useful behaviour. Normally when a runtime error occurs in SQF (unlike when there is compile error) it continues to execute till the end. But if the script is placed in try {} scope and throw is used upon error, the script immediately terminates, exits the try {} scope and enters catch {} scope. This way it is possible to process possible exceptions in civilised manner.