The syntax of a try block (which is a statement in C++) is
try compound-statement handler-sequence
And the syntax of if is:
attr(optional) if ( condition ) statement_true
attr(optional) if ( condition ) statement_true else statement_false
where:
statement-true– any statement (often a compound statement), which
is executed if condition evaluates to true
statement-false– any
statement (often a compound statement), which is executed if condition
evaluates to false
So yes, your code is legal code in C++.
statement_true in your case is a try block.
In legality, it is similar to:
if (condition) for(...) {
...
}
But your code is not very readable and can be the victim of some C++ pitfalls when an else is added. So, it is advisable to add explicit {...} after if in your case.