Difference between revisions of "catch"
Jump to navigation
Jump to search
Lou Montana (talk | contribs) m (Text replacement - "\[\[Category:ArmA: Control Structures\|[a-zA-Z0-9 _]*\]\]" to "") |
Lou Montana (talk | contribs) m (Text replacement - "\| *((\[\[.*\]\],? ?)+) * \}\}" to "|seealso= $1 }}") |
||
(18 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | {{ | + | {{RV|type=command |
− | |||
− | | | + | | arma1 |
− | | | + | |gr1= Program Flow |
− | |||
− | | | + | |1.00 |
− | |||
− | | try | + | | Processes code when an [[Exception handling|exception]] is thrown in a [[try]] block. The exception caught can be found in the ''_exception'' variable. |
− | | | + | | tryBlock [[catch]] code |
− | | | + | |p1= tryBlock: [[Exception handling|Exception Type]] |
− | | [[ | + | |p2= code: [[Code]] |
− | |||
− | | [[ | + | | [[Anything]] |
− | }} | + | |x1= <code>[[try]] {[[throw]] "invalid argument"} [[catch]] {[[hint]] [[str]] _exception};</code> |
+ | |||
+ | |x2= {{Since|arma3|1.53.133045}}: <code>123 [[try]] {[[if]] (_this != 123) [[throw]] "invalid argument"} [[catch]] {[[hint]] [[str]] _exception};</code> | ||
+ | |||
+ | |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> | ||
− | + | |seealso= [[Exception handling]], [[try]], [[throw]] | |
+ | }} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | [[Category: | + | [[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]] |
+ | {{GameCategory|arma1|Scripting Commands}} | ||
+ | {{GameCategory|arma2|Scripting Commands}} | ||
+ | {{GameCategory|arma3|Scripting Commands}} | ||
+ | {{GameCategory|tkoh|Scripting Commands}} |
Latest revision as of 23:22, 16 February 2021
Description
- Description:
- Processes code when an exception is thrown in a try block. The exception caught can be found in the _exception variable.
Syntax
- Syntax:
- tryBlock catch code
- Parameters:
- tryBlock: Exception Type
- code: Code
- Return Value:
- Anything
Examples
- 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 handlingtrythrow
- Groups:
- Program Flow
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