essayez() et lancez()... je ne comprends tout simplement pasJ'ai vraiment essayé (sans jeu de mots) d'utiliser try() et throw() mais cela ne semble pas fonctionner comme je l'ai lu.
J'ai un ensemble de données avec les colonnes Value et Parameter. Je veux exécuter un script et faire beaucoup de choses sur cet ensemble de données, mais seulement si ces colonnes existent. Quelqu'un peut-il m'expliquer comment utiliser try() et throw() dans ces cas ou s'ils doivent être utilisés du tout ?
Le script devrait-il ressembler à ceci ?
mydt=current data table();
if (
try(
Column (mydt, "Value") & Column (mydt, "Parameter"),
throw("Value and Parameter columns do not exist");
);
rest of script;
);
ou ca?
mydt=current data table();
try(
Column (mydt, "Value") & Column (mydt, "Parameter");
rest of script,
throw("Value and Parameter columns do not exist");
);
Re : essayer() et lancer()... je ne comprends tout simplement pasJe tiens à vous remercier tous. Avec votre aide, j'ai pu mieux comprendre try() et throw() et je les ai utilisés avec succès dans plusieurs domaines de mes scripts.
merci beaucoup,
Chauffage
Re : essayer() et lancer()... je ne comprends tout simplement pasPlutôt que d'utiliser Try, vous pouvez vérifier explicitement l'existence de la colonne.
dt = open("$sample_data\Big Class.jmp");
col_list = dt << get column names(string);
if (!contains(col_list, "Value") | !contains(col_list("Parameters")),
nw = new window("Missing columns", << modal(),
text box("Value and Parameter columns do not exist")
);
throw("Value and Parameter columns do not exist");
);
Re : essayer() et lancer()... je ne comprends tout simplement pasLa fonction Trow(), lorsqu'elle est utilisée de cette manière, arrête l'exécution du script et écrit la chaîne entre guillemets dans le journal. De plus, si Throw() est généré à partir d'une action Window, une fenêtre d'alerte apparaîtra également avec le message.
Si vous vouliez arrêter l'exécution du script lorsque ces colonnes n'existent pas, vous pouvez utiliser la fonction Throw() pour le faire. Vous pouvez soit inclure le reste du script dans l'essai, soit après l'essai, dans les deux cas, le script arrêtera l'exécution lorsqu'une erreur se produit.
De plus, l'utilisation de la section de votre code ci-dessous échouera même si les colonnes existent, car vous ne pouvez pas associer les colonnes AND (&) pour renvoyer quoi que ce soit. Le message d'erreur est "Impossible de convertir l'argument en un nombre [ou une matrice] lors de l'accès ou de l'évaluation de 'Et'"
Column (mydt, "Value") & Column (mydt, "Parameter");
Cet exemple ci-dessous imprimera "reste du script" dans le journal lorsque la table Big Class est ouverte et lancera un message dans le journal si ce n'est pas le cas. Je viens d'inclure des références aux deux colonnes pour tester leur existence.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
Try(
Column( dt, "height" );
Column( dt, "weight" );
,
Throw( "height and weight columns do not exist" )
);
Print( "rest of script" );
Re : essayer() et lancer()... je ne comprends tout simplement pasJe pense que ce que tu veux vraiment faire c'est :
If(
Try( Column( mydt, "Value" ) << get name, "" ) == "" |
Try( Column( mydt, "Parameter" ) << get name, "" ) == "",
Throw( "Value and Parameter columns do not exist" ),
rest of script
);
La fonction Try vous permet d'effectuer une opération qui, si elle échoue, n'arrêtera pas le traitement.Il permet également de définir un deuxième paramètre, qui sera ce qui est renvoyé si Try trouve une condition d'échec.
Ainsi le script ci-dessus renverra un "" si la variable "valeur" n'existe pas, et renverra un "" si la variable "Paramètre" n'existe pas et puisqu'un OU "|" est utilisée, le résultat de la comparaison globale sera vrai si l'une ou l'autre des variables n'est pas trouvée.Si le résultat est vrai, la fonction Throw() sera exécutée, sinon le reste du code sera exécuté.
Re : try() et throw()... Je ne comprends tout simplement pasvotre réponse est très bonne! merci ~ 厉害了:thumbs_up: