throw: Difference between revisions

From Bohemia Interactive Community
m (Text replacement - "|SYNTAX= |p21=" to "|SYNTAX2= |p21=")
m (Some wiki formatting)
 
(72 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Command|Comments=
{{RV|type=command
____________________________________________________________________________________________


| arma |Game name=
|game1= arma1
|version1= 1.00


|1.00|Game version=
|game2= arma2
____________________________________________________________________________________________
|version2= 1.00


| Throws an exception. The exception is processed by first [[catch]] block. This command will terminate further execution of the code.
|game3= arma2oa
|version3= 1.50


<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=
|game4= tkoh
____________________________________________________________________________________________
|version4= 1.00


| '''throw''' expression |SYNTAX=
|game5= arma3
|version5= 0.50


|p1= expression: [[Anything]] |PARAMETER1=
|gr1= Program Flow


| [[Nothing]] |RETURNVALUE=
|descr= Throws an exception. The exception is processed by first [[catch]] block. This command will terminate further execution of the code.


| s2= if (condition) '''throw''' exception &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (''Since Arma 3 v1.53.133045'') |SYNTAX2=
{{Feature|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 {{Link|#Example 3}}.}}


|p21= if (condition): [[If Type]] - if (condition) returns [[true]], "exception" is thrown |PARAMETER1=
|s1= [[throw]] exception
|p22= exception: [[Anything]] - value that will be put into ''_exception'' variable inside [[catch]] block|PARAMETER1=


| r2= [[Nothing]] |RETURNVALUE=
|p1= exception: [[Anything]] - value that is put into the <sqf inline>_exception</sqf> variable inside [[catch]] block
____________________________________________________________________________________________
 
 
|r1= [[Nothing]]
|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> |EXAMPLE1=
|s2= ifType [[throw]] exception
|x3= The correct usage of shorthand alt syntax: <code>[[try]] {
 
[[if]] (a > b) [[throw]] "Error: some error"; /// OK
|s2since= arma3 1.54
/// The command argument is static
} [[catch]] {
[[hint]] [[str]] _exception;
};


[[try]] {
|p21= ifType: [[If Type]] - if the condition returns [[true]], ''exception'' is thrown
_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]] {
|p22= exception: [[Anything]] - value that is put into the <sqf inline>_exception</sqf> variable inside [[catch]] block
_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> |=
____________________________________________________________________________________________


| [[Exception handling]], [[try]], [[catch]]  |SEEALSO=
|r2= [[Nothing]]


}}
|x1= <sqf>try { throw "invalid argument" } catch { hint str _exception };</sqf>


<h3 style="display:none">Notes</h3>
|x2= <sqf>123 try { if (_this != 123) throw "invalid argument" } catch { hint str _exception };</sqf>
<dl class="command_description">
<!-- Note Section BEGIN -->


<!-- Note Section END -->
|x3= The correct usage of shorthand alt syntax:
</dl>
<sqf>
try
{
if (a > b)
throw "Error: some error"; // OK - the command argument is static
}
catch
{
hint str _exception;
};
</sqf>
<sqf>
try
{
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;
};
</sqf>
<sqf>
try
{
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;
};
</sqf>


<h3 style="display:none">Bottom Section</h3>
|seealso= [[Exception handling]] [[try]] [[catch]]
[[Category:Scripting Commands|THROW]]
}}
[[Category:Scripting Commands ArmA|THROW]]
[[Category:ArmA: Control Structures|THROW]]
[[Category:Command Group: Program Flow|THROW]]
[[Category:Scripting Commands ArmA2|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting_Commands_Take_On_Helicopters|{{uc:{{PAGENAME}}}}]]

Latest revision as of 18:33, 7 January 2026

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:
Program Flow

Syntax

Syntax:
throw exception
Parameters:
exception: Anything - value that is put into the _exception variable inside catch block
Return Value:
Nothing

Alternative Syntax

Syntax:
ifType throw exception
Parameters:
ifType: If Type - if the condition returns true, exception is thrown
exception: Anything - value that is put into the _exception variable inside catch block
Return Value:
Nothing

Examples

Example 1:
try { throw "invalid argument" } catch { hint str _exception };
Example 2:
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 { 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 { 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 handling try catch

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord.
Only post proven facts here! Add Note