Cuando se genera un error, el sistema arroja una excepción. Por lo general, la excepción es un objeto que contiene los siguientes miembros:
code: código numérico asociado con el error.
message: mensaje asociado con el error legible para el ojo humano.
Las excepciones se pueden capturar y resolver, o se las puede quitar del entorno de secuencia de comandos. Si un entorno de secuencia de comandos tiene una excepción no capturada, los detalles aparecen en la CLI. Por ejemplo:
dory:> script run('not a cmd') error: uncaught error exception (code EAKSH_BADCMD) in script: invalid command "not a cmd" (encountered while attempting to run command "not a cmd")
Para ver más detalles sobre la excepción, puede capturarla y volcarla:
dory:> script try { run('not a cmd') } catch (err) { dump(err); } { toString: <function>, code: 10004, message: 'invalid command "not a cmd" (encountered while attempting to run command "not a cmd")' }
Esto también le permite un tratamiento enriquecido de los errores, por ejemplo:
#!/usr/bin/ksh -p ssh -T root@dory <<EOF script try { run('shares select default select $1'); } catch (err) { if (err.code == EAKSH_ENTITY_BADSELECT) { printf('error: "$1" is not a share in the ' + 'default project\n'); exit(1); } throw (err); } printf('"default/$1": compression is %s\n', get('compression')); exit(0); EOF
Si esta secuencia de comandos se llama "share.ksh" y se ejecuta con un nombre de recurso compartido no válido, se genera un mensaje de error enriquecido:
% ksh ./share.ksh bogus error: "bogus" is not a share in the default project