try: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "\[\[Category:ArmA: Control Structures\|[a-zA-Z0-9 _]*\]\]" to "")
Line 1: Line 1:
{{Command|Comments=
{{Command
____________________________________________________________________________________________


| arma |Game name=
|game1= arma


|1.00|Game version=
|version1= 1.00
____________________________________________________________________________________________


| Defines a try-catch structure. This sets up an [[Exception handling|exception handling]] block. Any thrown exception in a try block is caught in a [[catch]] block. The structured exception block has the following form:
|s1= Defines a try-catch structure. This sets up an [[Exception handling|exception handling]] block. Any thrown exception in a try block is caught in a [[catch]] block. The structured exception block has the following form:
<code> try //begin of try-catch block
<code>[[try]]
  { //block, that can throw exception }  
{ {{codecomment|/* block that can throw exception */}} }
catch
[[catch]]
  { //block, that process an exception. Exception is described in ''_exception'' variable };</code> |DESCRIPTION=
{ {{codecomment|/* block that processes the exception. Exception is described in the ''_exception'' variable}} };</code> |DESCRIPTION=
____________________________________________________________________________________________
____________________________________________________________________________________________


| '''try''' code |SYNTAX=
| [[try]] code |SYNTAX=


|p1= code: [[Code]] |PARAMETER1=
|p1= code: [[Code]] |PARAMETER1=
Line 21: Line 19:
____________________________________________________________________________________________
____________________________________________________________________________________________


| s2= args '''try''' code &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (''Since Arma 3 v1.53.133045'') |SYNTAX2=
| s2= args [[try]] code {{since|arma3|1.53.133045|y}} |SYNTAX2=


|p21= args: [[Anything]] - passed arguments, will be put in ''_this'' variable inside the "code" |PARAMETER21=
|p21= args: [[Anything]] - passed arguments, will be put in ''_this'' variable inside the "code" |PARAMETER21=
|p22= code: [[Code]] |PARAMETER1=


| r2= [[Exception handling|Exception Type]] |RETURNVALUE=
|p22= code: [[Code]] |PARAMETER22=
 
| r2= [[Exception handling|Exception Type]] |RETURNVALUE2=
 
 
|x1= <code>[[try]] {[[throw]] "invalid argument"} [[catch]] {[[hint]] [[str]] _exception};</code> |EXAMPLE1=
 
|x2= {{since|arma3|1.53.133045}}: <code>123 [[try]] {[[if]] (_this != 123) [[throw]] "invalid argument"} [[catch]] {[[hint]] [[str]] _exception};</code> |EXAMPLE2=


| [[Exception handling]], [[throw]], [[catch]] |SEEALSO=
|x3= The correct usage of shorthand alt syntax: <code>[[try]] {
[[if]] (a > b) [[throw]] "Error: some error"; {{cc|OK}}
{{cc|The command argument is static}}
} [[catch]] {
[[hint]] [[str]] _exception;
};
 
[[try]] {
_someFunc = {
.....
};
[[if]] (a > b) [[throw]] ([[call]] _someFunc); {{cc|NOT OK}}
{{cc|The command argument is dynamic}}
{{cc|_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
{{cc|The command argument is dynamic}}
{{cc|_someFunc is only called when (a > b) is [[true]]}}
} [[catch]] {
[[hint]] [[str]] _exception;
};</code> |EXAMPLE3=
 
|seealso= [[Exception handling]], [[throw]], [[catch]]
}}
}}


Line 39: Line 72:


<h3 style="display:none">Bottom Section</h3>
<h3 style="display:none">Bottom Section</h3>
[[Category:Scripting Commands|TRY]]
[[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands ArmA|TRY]]
[[Category:Scripting Commands ArmA|{{uc:{{PAGENAME}}}}]]
 
[[Category:Command Group: Program Flow|TRY]]
[[Category:Scripting Commands ArmA2|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands ArmA2|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting_Commands_Take_On_Helicopters|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting_Commands_Take_On_Helicopters|{{uc:{{PAGENAME}}}}]]
[[Category:Command Group: Program Flow|{{uc:{{PAGENAME}}}}]]


<!-- CONTINUE Notes -->
<!-- CONTINUE Notes -->

Revision as of 21:29, 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 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.