prova() e lancia()... Semplicemente non capiscoHo davvero provato (nessun gioco di parole) a usare try() e throw() ma non sembra funzionare nel modo in cui l'ho letto.
Ho un set di dati con colonne Valore e Parametro. Voglio eseguire uno script e fare molte cose su questo set di dati, ma solo se esistono quelle colonne. Qualcuno può spiegarmi come usare try() e throw() in questi casi o se dovrebbero essere usati affatto?
La sceneggiatura dovrebbe essere così?
mydt=current data table();
if (
try(
Column (mydt, "Value") & Column (mydt, "Parameter"),
throw("Value and Parameter columns do not exist");
);
rest of script;
);
o questo?
mydt=current data table();
try(
Column (mydt, "Value") & Column (mydt, "Parameter");
rest of script,
throw("Value and Parameter columns do not exist");
);
Re: try() e throw()... Semplicemente non capiscoVoglio ringraziare tutti voi. Con il tuo aiuto, sono stato in grado di comprendere molto meglio try() e throw() e li ho usati con successo in più aree dei miei script.
grazie molto,
Erica
Re: try() e throw()... Semplicemente non capiscoInvece di usare Try puoi verificare esplicitamente l'esistenza della colonna.
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: try() e throw()... Semplicemente non capiscoLa funzione Trow(), se usata in questo modo, fermerà l'esecuzione dello script e scriverà la stringa tra virgolette nel log. Inoltre, se Throw() viene generato da un'azione Window, verrà visualizzata anche una finestra di avviso con il messaggio.
Se si desidera interrompere l'esecuzione dello script quando tali colonne non esistono, è possibile utilizzare la funzione Throw() per farlo. Puoi includere il resto dello script all'interno del Try o dopo il try, in entrambi i casi, lo script interromperà l'esecuzione quando si verifica un errore.
Inoltre, l'utilizzo della sezione del codice seguente fallirà anche se le colonne esistono poiché non è possibile AND (&) colonne insieme per restituire qualcosa. Il messaggio di errore è "Impossibile convertire l'argomento in un numero [o matrice] nell'accesso o nella valutazione di 'E'"
Column (mydt, "Value") & Column (mydt, "Parameter");
Questo esempio seguente stamperà "resto dello script" nel registro quando la tabella Big Class viene aperta e genererà un messaggio nel registro in caso contrario. Ho appena incluso riferimenti a entrambe le colonne per verificare che esistano.
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: try() e throw()... Semplicemente non capiscoPenso che quello che vuoi veramente fare sia:
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 funzione Prova consente di eseguire un'operazione che, se fallisce, non interromperà l'elaborazione.Consente inoltre di impostare un secondo parametro, che sarà quello restituito se Try trova una condizione di errore.
Quindi lo script precedente restituirà un "" se la variabile "value" non esiste e restituirà un "" se la variabile "Parameter" non esiste e poiché un OR "|" viene utilizzata la clausola, il risultato del confronto complessivo sarà vero se una delle variabili non viene trovata.Se il risultato è vero, verrà eseguita la funzione Throw(), altrimenti verrà eseguito il resto del codice.
Re: try() e launch()... semplicemente non capiscola tua risposta è molto buona! grazie ~ 厉害了:thumbs_up: