操作間違いをユーザに知らせたい場合

STDERR.print という実行文の場合、ユーザが誤った操作をした場合に、 ユーザの画面 console に標準出力される。例えば、 コマンドライン入力しなければならないプログラムに対して、 プログラムのみ実行し、入力情報を忘れたユーザに対しては、 プログラムの冒頭にエラーメッセージを伝え、プログラムを強制終了させる、 などの工夫ができる。


if ARGV[0] == nil
  STDERR.print("コマンドライン入力に失敗しました\n")
  STDERR.print("例: ./airline.rb  姓 \t 名 \t 出発地 \t 到着地\n\n")
  exit(1)
end

まず配列 ARGV に入っている要素 ARGV[0] が nil(無効) になっているかどうか調べ、 STDERR.print で、エラーメッセージをユーザ画面に出力させ、 正しい使いかたを誘導している。

操作間違いは、空欄ばかりではない。 例えば、整数値を計算させたいプログラムに対しては、 文字列が入ってしまったり、ただの改行、 負の数や小数点などが入力された場合も操作間違いである。

プログラムの計算結果を他のファイルに打ち出すような場合、 この STDERR が print と結合していることで、エラーメッセージはファイルに行かず、 ユーザの目にふれる。例えば窓口業務の場合、航空券を販売するが、 このときに実行するには、次のようにすればよかった。

% ./airline.rb > confirm.txt

STDERR なしではエラーメッセージが confirm.txt に書き出され、航空券に印字されてしまうまで気づかない。 標準エラー出力を print 文 につけておく理由は、 利用者が操作間違いをしたことが分かるようにするためである。

基礎プログラミング II / 2007 年度

Madoka Nishimura <madoka@e.koeki-u.ac.jp>