while switch sentencia lenguaje for else ejemplos condicionales ciclos c++ exception try-catch language-lawyer

sentencia - switch c++



Es si(condiciĆ³n) intenta{...} legal en C++? (4)

¿Es legal poner el try-block justo después de la condición if?

Es legal Su código es el mismo (y mejor para escribir como):

if (true) { try { // works as expected with both true and false, but is it legal? } catch (...) { // ... } }

Entonces, si la condición es false , el bloque try-catch no se ejecutará. Si esto es lo que esperas, está bien.

Por ejemplo:

if (true) try { // works as expected with both true and false, but is it legal? } catch (...) { // ... }

En otras palabras, ¿es legal colocar el try-block justo después de la condición if ?



La sintaxis de un bloque try (que es una statement en C ++) es

try compound-statement handler-sequence

Y la sintaxis de if es:

attr(optional) if ( condition ) statement_true attr(optional) if ( condition ) statement_true else statement_false

dónde:

statement-true : cualquier instrucción (a menudo una declaración compuesta), que se ejecuta si la condición se evalúa como verdadera
statement-false - cualquier instrucción (a menudo una declaración compuesta), que se ejecuta si la condición se evalúa como falsa

Entonces sí, su código es código legal en C++ .

statement_true en tu caso es un bloque try .

En legalidad, es similar a:

if (condition) for(...) { ... }

Pero su código no es muy legible y puede ser víctima de algunas trampas de C ++ cuando se agrega otro. Por lo tanto, es aconsejable agregar {...} explícito después if en su caso.


Sí. Las llaves de un if son opcionales. Imagine que tiene {} alrededor del try { .. } catch { .. } .

Le puede interesar saber que esto es lo que sucede cuando escribe if / else if / else ; C ++ en realidad no tiene else if ... así que esto:

if (A) { } else if (B) { }

en realidad se analiza como esto:

if (A) { } else if (B) { }

cual es este:

if (A) { } else { if (B) { } }