エラーが生成されると、例外がスローされます。この例外は一般に、次のメンバーを含むオブジェクトです。
code - エラーに関連付けられた数値コード
message - エラーに関連付けられた、人間が読める形式のメッセージ
例外はキャッチして処理できます。または、スクリプト環境からスローされる可能性があります。スクリプト環境にキャッチされていない例外がある場合は、CLI にその詳細が表示されます。次に例を示します。
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")
例外をキャッチしてダンプすることによって、例外に関するより詳細な情報を表示できます。
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")' }
また、これにより、豊富なエラー処理も可能になります。次に例を示します。
#!/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
このスクリプトが「share.ksh」という名前であり、無効なシェア名で実行された場合は、次のような豊富なエラーメッセージが生成されます。
% ksh ./share.ksh bogus error: "bogus" is not a share in the default project