throw: Difference between revisions
Jump to navigation
Jump to search
Killzone Kid (talk | contribs) (if .. throw support) |
Killzone Kid (talk | contribs) (explained usage of shorthand syntax) |
||
Line 7: | Line 7: | ||
____________________________________________________________________________________________ | ____________________________________________________________________________________________ | ||
| Throws an exception. The exception is processed by first [[catch]] block. | | Throws an exception. The exception is processed by first [[catch]] block. | ||
<br><br>'''NOTE''': Avoid using alternative shorthand syntax if you are planning on preparing your exception information dynamically, as it will have to be generated first regardless of the condition of the [[if]] statement before it, as shown in example 3.|= Description | |||
____________________________________________________________________________________________ | ____________________________________________________________________________________________ | ||
Line 26: | Line 28: | ||
|x1= <code>[[try]] {[[throw]] "invalid argument"} [[catch]] {[[hint]] [[str]] _exception};</code> |= Example 1 | |x1= <code>[[try]] {[[throw]] "invalid argument"} [[catch]] {[[hint]] [[str]] _exception};</code> |= Example 1 | ||
|x2= Since Arma 3 v1.53.133045: <code>123 [[try]] {[[if]] (_this != 123) [[throw]] "invalid argument"} [[catch]] {[[hint]] [[str]] _exception};</code> |= Example 1 | |x2= Since Arma 3 v1.53.133045: <code>123 [[try]] {[[if]] (_this != 123) [[throw]] "invalid argument"} [[catch]] {[[hint]] [[str]] _exception};</code> |= Example 1 | ||
|x3= The correct usage of shorthand alt syntax: <code>[[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 | |||
};</code> |= | |||
____________________________________________________________________________________________ | ____________________________________________________________________________________________ | ||
Revision as of 21:45, 4 December 2015
Description
- Description:
- Throws an exception. The exception is processed by first catch block.
NOTE: Avoid using alternative shorthand syntax if you are planning on preparing your exception information dynamically, as it will have to be generated first regardless of the condition of the if statement before it, as shown in example 3. - Groups:
- Uncategorised
Syntax
Alternative Syntax
- Syntax:
- if (condition) throw exception (Since Arma 3 v1.53.133045)
- Parameters:
- if (condition): If Type - if (condition) returns true, "exception" is thrown
- exception: Anything - value that will be put into _exception variable inside catch block
- Return Value:
- Nothing
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 handlingtrycatch
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