STDERR.print という実行文の場合、ユーザが誤った操作をした場合に、 ユーザの使用している画面に標準出力される。例えば、 コマンドライン入力しなければならないプログラムに対して、 入力情報を忘れたユーザに対しては、 プログラムの冒頭にエラーメッセージを伝え、 プログラムを強制終了させるなどの工夫ができる。
if ARGV[0] == nil
STDERR.print("入力に失敗しました\n")
STDERR.print("出発地 目的地 特急券の種類 支払い方法 の順に入力\n")
exit(1)
end
まず配列 ARGV に入っている要素 ARGV[0] が nil (無効) になっているかどうか調べ、 STDERR.print で、エラーメッセージをユーザ画面に出力させ、 正しい使いかたを誘導している。
操作間違いは、空欄ばかりではない。 例えば、整数値を計算させたいプログラムに対しては、 文字列が入ってしまった場合も操作間違いである。 あるいは改行のみ入力された場合、 負の数や小数点などが入力された場合も操作間違いである。
プログラムの計算結果を他のファイルに打ち出すような場合、
この
STDERR
が print
と結合していることで、エラーメッセージはファイルに行かず、
ユーザの目にふれる。
例えば窓口業務の場合、特急券を印刷して手渡すが、
このときに印刷の実行するしくみは次のようであった。
% ./argv_ticket.rb > confirm.txt
STDERR なしではエラーメッセージが confirm.txt
に書き出され、発券(券に印字されてしまう)まで気づかない。
標準エラー出力を
print
文 につけておく理由は、
利用者が操作間違いをしたことが分かる
ようにするためである。