Exception handling: Difference between revisions
Jump to navigation
Jump to search
(I'll write next part later...) |
Lou Montana (talk | contribs) m (Some wiki formatting) |
||
(23 intermediate revisions by 11 users not shown) | |||
Line 1: | Line 1: | ||
[[ | In {{arma1}} exception handling is an implemented system of special scripting commands ([[try]], [[catch]] and [[throw]]), which allows your scripts to create and to react to exceptions. | ||
Standard construction is: | Standard construction is: | ||
<sqf> | |||
try | |||
{ | |||
// code block that can throw exception | |||
if (_name == "") then | |||
{ | |||
throw "no name"; | |||
} | |||
else | |||
{ | |||
titleText [format ["Good morning, Captain %1.", _name], "PLAIN DOWN"]; | |||
sleep 1; | |||
titleText [_name, "PLAIN DOWN"]; | |||
}; | |||
} | |||
catch | |||
{ | |||
// code block that processes an exception | |||
if (_exception == "no name") then | |||
{ | |||
hint "Name was not entered"; | |||
titleText ["And the name isn't", "PLAIN DOWN"]; | |||
}; | |||
}; | |||
</sqf> | |||
{{Feature|important|{{Name|arma}} scripting commands do '''not''' create SQF exceptions by themselves if they encounter an illegal situation, they throw a compilation exception (i.e. the here-described exception handling cannot be used for error trapping). | |||
The following would therefore '''not''' create a catchable exception: | |||
<sqf> | |||
try | |||
{ | |||
a = 1 / 0; // SQF error happens here already | |||
} | } | ||
catch | |||
{ | |||
hint "illegal operation"; // useless | |||
}; | |||
</sqf> | |||
}} | |||
[[Category: Scripting Topics]] | |||
Latest revision as of 00:14, 22 July 2022
In Armed Assault exception handling is an implemented system of special scripting commands (try, catch and throw), which allows your scripts to create and to react to exceptions.
Standard construction is:
try
{
// code block that can throw exception
if (_name == "") then
{
throw "no name";
}
else
{
titleText [format ["Good morning, Captain %1.", _name], "PLAIN DOWN"];
sleep 1;
titleText [_name, "PLAIN DOWN"];
};
}
catch
{
// code block that processes an exception
if (_exception == "no name") then
{
hint "Name was not entered";
titleText ["And the name isn't", "PLAIN DOWN"];
};
};