Par exemple:
if (true) try
{
// works as expected with both true and false, but is it legal?
}
catch (...)
{
// ...
}
En d'autres termes, est-il légal de placer le bloc try juste après la condition if ?
Par exemple:
if (true) try
{
// works as expected with both true and false, but is it legal?
}
catch (...)
{
// ...
}
En d'autres termes, est-il légal de placer le bloc try juste après la condition if ?
La syntaxe d'un try
bloc (qui est une instruction en C++) est
try compound-statement handler-sequence
Et la syntaxe de l' if
est:
attr(optional) if ( condition ) statement_true
attr(optional) if ( condition ) statement_true else statement_false
Donc oui, votre code est un code juridique en C++
.
statement_true
dans votre cas est un try
bloc.
Dans la légalité, il est semblable à:
if (condition) for(...) {
...
}
Mais ton code n'est pas très lisible et peut être la victime de certains C++ écueils lors de l' else
est ajouté. Donc, il est conseillé d'ajouter explicite {...}
après if
dans votre cas.
est-il légal de mettre le bloc d'essai juste après la condition if?
C'est légal, votre code est le même que (et il vaut mieux écrire comme):
if (true) { try { // works as expected with both true and false, but is it legal? } catch (...) { // ... } }
Donc, si la condition est
false
le bloctry-catch
ne sera pas exécuté. Si c'est ce que vous attendez, c'est bien.
Oui. Les accolades d'un if
sont facultatives. Imaginez que vous avez {}
autour du try { .. } catch { .. }
.
Cela peut vous intéresser de savoir que c'est ce qui se passe lorsque vous écrivez if
- else if
- else
; C ++ n’a pas réellement else if
… donc ceci:
if (A) {
}
else if (B) {
}
est en fait analysé comme ceci:
if (A) {
}
else
if (B) {
}
qui est ceci:
if (A) {
}
else {
if (B) {
}
}
C'est bien formé. Les blocs try-block sont des instructions selon [stmt.stmt] / 1 et les instructions s suivent if (…)
selon [stmt.select] / 1 .
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.