throw: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "|EXAMPLE1= |x3=" to "|EXAMPLE2= |x3=")
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.


<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=
{{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=
____________________________________________________________________________________________
____________________________________________________________________________________________


| '''throw''' expression |SYNTAX=
|s1= [[throw]] expression |SYNTAX=


|p1= expression: [[Anything]] |PARAMETER1=
|p1= expression: [[Anything]] |PARAMETER1=


| [[Nothing]] |RETURNVALUE=
|r1= [[Nothing]] |RETURNVALUE=


| s2= if (condition) '''throw''' exception &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (''Since Arma 3 v1.53.133045'') |SYNTAX2=
|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|PARAMETER1=
|p22= exception: [[Anything]] - value that will be put into ''_exception'' variable inside [[catch]] block|PARAMETER22=


| r2= [[Nothing]] |RETURNVALUE=
|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= Since Arma 3 v1.53.133045: <code>123 [[try]] {[[if]] (_this != 123) [[throw]] "invalid argument"} [[catch]] {[[hint]] [[str]] _exception};</code> |EXAMPLE2=
 
|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"; /// OK
[[if]] (a > b) [[throw]] "Error: some error"; {{cc|OK}}
/// The command argument is static
{{cc|The command argument is static}}
} [[catch]] {
} [[catch]] {
[[hint]] [[str]] _exception;
[[hint]] [[str]] _exception;
Line 40: Line 41:
.....
.....
};
};
[[if]] (a > b) [[throw]] ([[call]] _someFunc); /// NOT OK
[[if]] (a > b) [[throw]] ([[call]] _someFunc); {{cc|NOT OK}}
/// The command argument is dynamic
{{cc|The command argument is dynamic}}
/// _someFunc is called first to get the value regardless of (a > b) outcome
{{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
/// The command argument is dynamic
{{cc|The command argument is dynamic}}
/// _someFunc is only called when (a > b) is [[true]]  
{{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=
|seealso= [[Exception handling]], [[try]], [[catch]]
 
}}
}}



Revision as of 21:32, 4 January 2020

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

Description

Description:
Throws an exception. The exception is processed by first catch block. This command will terminate further execution of the code.
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

Syntax:
throw expression
Parameters:
expression: Anything
Return Value:
Nothing

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

Notes

Bottom Section