try: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Fix comment format)
Line 9: Line 9:
{ {{codecomment|/* block that can throw exception */}} }
{ {{codecomment|/* block that can throw exception */}} }
[[catch]]
[[catch]]
{ {{codecomment|/* block that processes the exception. Exception is described in the ''_exception'' variable}} };</code> |DESCRIPTION=
{ {{codecomment|/* block that processes the exception. Exception is described in the ''_exception'' variable */}} };</code> |DESCRIPTION=
____________________________________________________________________________________________
____________________________________________________________________________________________


Line 84: Line 84:
<dt class="note">[[User:Killzone Kid|Killzone Kid]]</dt>
<dt class="note">[[User:Killzone Kid|Killzone Kid]]</dt>
<dd class="note">
<dd class="note">
Do not expect this behave like Javascript try catch and ignore all errors. But it does have one useful behaviour. Normally when 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.  
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.  
</dd>
</dd>
</dl>
</dl>
<!-- DISCONTINUE Notes -->
<!-- DISCONTINUE Notes -->

Revision as of 22:30, 4 January 2020

-wrong parameter ("Arma") defined!-1.00
Hover & click on the images for description

Description

Description:
Description needed
Groups:
Uncategorised

Syntax

Syntax:
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 */ };
Parameters:
code: Code
Return Value:
Return value needed

Alternative Syntax

Syntax:
args try code Template:since
Parameters:
args: Anything - passed arguments, will be put in _this variable inside the "code"
code: Code
Return Value:
Exception Type

Examples

Example 1:
try {throw "invalid argument"} catch {hint str _exception};
Example 2:
Template:since: 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

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note

Notes

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.