throw: Difference between revisions
Jump to navigation
Jump to search
Lou Montana (talk | contribs) m (Text replacement - "|EXAMPLE1= |x3=" to "|EXAMPLE2= |x3=") |
Lou Montana (talk | contribs) (Fix Category:Pages using duplicate arguments in template calls and add example) |
||
Line 9: | Line 9: | ||
| Throws an exception. The exception is processed by first [[catch]] block. This command will terminate further execution of the code. | | Throws an exception. The exception is processed by first [[catch]] block. This command will terminate further execution of the code. | ||
{{Important | 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= | |||
____________________________________________________________________________________________ | ____________________________________________________________________________________________ | ||
| | |s1= [[throw]] expression |SYNTAX= | ||
|p1= expression: [[Anything]] |PARAMETER1= | |p1= expression: [[Anything]] |PARAMETER1= | ||
| [[Nothing]] |RETURNVALUE= | |r1= [[Nothing]] |RETURNVALUE= | ||
| s2= if (condition) | |s2= if (condition) [[throw]] exception {{since|arma3|1.53.133045|y}} |SYNTAX2= | ||
|p21= if (condition): [[If Type]] - if (condition) returns [[true]], "exception" is thrown |PARAMETER21= | |p21= if (condition): [[If Type]] - if (condition) returns [[true]], "exception" is thrown |PARAMETER21= | ||
|p22= exception: [[Anything]] - value that will be put into ''_exception'' variable inside [[catch]] block| | |p22= exception: [[Anything]] - value that will be put into ''_exception'' variable inside [[catch]] block|PARAMETER22= | ||
| r2= [[Nothing]] | | |r2= [[Nothing]] |RETURNVALUE2= | ||
____________________________________________________________________________________________ | ____________________________________________________________________________________________ | ||
|x1= <code>[[try]] {[[throw]] "invalid argument"} [[catch]] {[[hint]] [[str]] _exception};</code> |EXAMPLE1= | |x1= <code>[[try]] {[[throw]] "invalid argument"} [[catch]] {[[hint]] [[str]] _exception};</code> |EXAMPLE1= | ||
|x2= | |||
|x2= {{since|arma3|1.53.133045}}: <code>123 [[try]] {[[if]] (_this != 123) [[throw]] "invalid argument"} [[catch]] {[[hint]] [[str]] _exception};</code> |EXAMPLE2= | |||
|x3= The correct usage of shorthand alt syntax: <code>[[try]] { | |x3= The correct usage of shorthand alt syntax: <code>[[try]] { | ||
[[if]] (a > b) [[throw]] "Error: some error"; | [[if]] (a > b) [[throw]] "Error: some error"; {{cc|OK}} | ||
{{cc|The command argument is static}} | |||
} [[catch]] { | } [[catch]] { | ||
[[hint]] [[str]] _exception; | [[hint]] [[str]] _exception; | ||
Line 40: | Line 41: | ||
..... | ..... | ||
}; | }; | ||
[[if]] (a > b) [[throw]] ([[call]] _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]] { | } [[catch]] { | ||
[[hint]] [[str]] _exception; | [[hint]] [[str]] _exception; | ||
Line 52: | Line 53: | ||
}; | }; | ||
[[if]] (a > b) [[then]] {[[throw]] ([[call]] _someFunc)}; /// OK | [[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]] { | } [[catch]] { | ||
[[hint]] [[str]] _exception; | [[hint]] [[str]] _exception; | ||
};</code> |= | };</code> |EXAMPLE3= | ||
____________________________________________________________________________________________ | ____________________________________________________________________________________________ | ||
| [[Exception handling]], [[try]], [[catch]] | |seealso= [[Exception handling]], [[try]], [[catch]] | ||
}} | }} | ||
Revision as of 21:32, 4 January 2020
Description
- Description:
- Throws an exception. The exception is processed by first catch block. This command will terminate further execution of the code.
- Groups:
- Uncategorised
Syntax
Alternative Syntax
- Syntax:
- if (condition) throw exception Template:since
- 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:
- 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 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