probar() y tirar()... Es sólo que no entiendoRealmente he intentado (sin juego de palabras) usar try() y throw() pero no parece funcionar de la forma en que lo leo.
Tengo un conjunto de datos con columnas Valor y Parámetro. Quiero ejecutar un script y hacer muchas cosas con este conjunto de datos, pero solo si existen esas columnas. ¿Alguien puede explicarme cómo usar try() y throw() en estos casos o si deberían usarse?
¿Debería verse así el guión?
mydt=current data table();
if (
try(
Column (mydt, "Value") & Column (mydt, "Parameter"),
throw("Value and Parameter columns do not exist");
);
rest of script;
);
¿o esto?
mydt=current data table();
try(
Column (mydt, "Value") & Column (mydt, "Parameter");
rest of script,
throw("Value and Parameter columns do not exist");
);
Re: probar() y lanzar()... Es sólo que no entiendoQuiero agradecerles a todos. Con su ayuda, pude obtener una comprensión mucho mejor de try() y throw() y los he usado con éxito en múltiples áreas de mis scripts.
muchas gracias,
Brezo
Re: probar() y lanzar()... Es sólo que no entiendoEn lugar de usar Probar, puede verificar explícitamente la existencia de la columna.
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: probar() y lanzar()... Es sólo que no entiendoLa función Trow(), cuando se usa de esta manera, detendrá la ejecución del script y escribirá la cadena citada en el registro. Además, si Throw() se genera a partir de una acción de ventana, también aparecerá una ventana de alerta con el mensaje.
Si desea detener la ejecución del script cuando esas columnas no existen, puede usar la función Throw() para hacerlo. Puede incluir el resto de la secuencia de comandos dentro de Try o después de la prueba; de cualquier manera, la secuencia de comandos detendrá la ejecución cuando ocurra un error.
Además, el uso de la sección de su código a continuación fallará incluso si las columnas existen, ya que no puede Y (&) columnas juntas para devolver nada. El mensaje de error es "No se puede convertir el argumento en un número [o matriz] en el acceso o evaluación de 'Y'"
Column (mydt, "Value") & Column (mydt, "Parameter");
Este ejemplo a continuación imprimirá el "resto del script" en el registro cuando se abra la tabla Big Class y arrojará un mensaje al registro si no lo está. Acabo de incluir referencias a ambas columnas para probar que existen.
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: probar() y lanzar()... Es sólo que no entiendoCreo que lo que realmente quieres hacer es:
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 función Try le permite realizar una operación que, si falla, no dejará de procesarse.También permite establecer un segundo parámetro, que será lo que se devuelva si Try encuentra una condición de falla.
Entonces, el script anterior devolverá un "" si la variable "valor" no existe, y devolverá un "" si la variable "Parámetro" no existe y desde un OR "|" se utiliza la cláusula, el resultado de la comparación general será verdadero si no se encuentra ninguna de las variables.Si el resultado es verdadero, se ejecutará la función Throw(), de lo contrario, se ejecutará el resto del código.
Re: intentar() y tirar()... Simplemente no entiendotu respuesta es muy buena! gracias ~ 厉害了:thumbs_up: