Sortie forcée d'un bloc code

Bonjour,

Je cherche une petite aide pour savoir comment sortir d’un bloc code sans attendre la fin avec éventuellement un code retour ou une sortie qui permette de mettre le scenario en erreur eventuellement. mais je sèche un peu.

  • $scenario->stop() m’arrête complètement le scenario qui reste dans un statut bidon en cours d’exécution.

  • exit() ne fonctionne pas

  • J’ai lu que threw new Exception('message'); pouvait fair el’affaire, mais je ne sais pas l’exploiter …

syntax error, unexpected 'new' (T_NEW)

Norbert

Salut,

un throw plutôt que threw p-e mais faut pas faire ca, c’est trop moche :face_vomiting:

un « simple » return fait l’affaire, c’est l’instruction pour rendre le contrôle à l’appelant

exemple, le « end » ne s’affichera jamais:

$scenario->setLog("start");
return;
$scenario->setLog("end");
5 « J'aime »

un post du community qui propose le threw … je ne donnerai pas le lien pour ne pas induire en erreur d’autres personnes

Le return, ben c’est trop simple ! pourquoi je n’y est pas penser …
question subsidiaire : si on met on code retour, une valeur avec le return. Est-ce exploitable dans le scenario ?
ou faut-il passer par un tag à implémenter avec le return ?

petit bonus +, est-il possible de mettre un scenario en « erreur » ?

Un return peut renvoyer une valeur (si non précisé c’est void)
Mais dans les blocs scénarios jeedom, il n’y a jamais de valeur retour, y compris pour le bloc code

Le return ici ne fait pas un return sur le scénario mais sur le bloc code donc le contrôle revient au scénario et le prochain bloc est exécuté

Donc tu as besoin d’un tag :wink:

J’imagine qu’après un throw le scénario sera en erreur; par définition une exception est une erreur pour moi.
A tester.

1 « J'aime »

Un cmd::byString("#[maCmd][qui][n'existePas]#") génère une erreur.

Oui, ca génère une erreur dans le scenario, ca fait sortir du bloc code, mais ca ne met pas le scenario en erreur (le scenario poursuit le reste des actions derrière)
Norbert

Hello,

Tu avais pas déjà posé un peu le même genre de question ?

La réponse ne convenait pas ?

Sortie bloc code vs sortie de scénario

C’est pas pareil pour moi

Ah, il veut sortir du bloc code sans sortir du scénario donc pouvoir continuer à l’exécuter ?

Même dans les blocs action, la division par zéro ne génère pas d’erreur.
L’erreur doit être gérée au niveau du core.

Bonsoir,

et cette solution conviendrait ?

$jeveutsortirdecescenario = true;

if($jeveutsortirdecescenario) {
$scenario->setLog('Arrêt du scénario par code');
$scenario->setDo(false);
}

Problème XY?

1 « J'aime »