• ベストアンサー

System.err. printlnとSystem.out.printlnはどう違うんでしょうか?

 初心者なので今までSystem.out.println文しか見たことがなかったのですが、テキストで急にIOExceptionのcatch文の中にSystem.err. println文が出てきました。  errをoutに書き換えてもエクリプスではチェックされなかったのですが、どういう違いがあるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.1

出力先が「標準出力」か「標準エラー出力」かの違いです。 Windows環境ですと、 標準出力はコンソール(コマンドプロンプト、もしくはDOS窓のこと)に出力されます。 標準エラー出力も同じくコンソールに出ます。 ただし、リダイレクト機能を使ったときに違いが表れます。 リダイレクトとは、 >program > a.txt のように、標準出力をするプログラムの出力を、 テキストファイルに書き出すことです。 Javaでも、コンソールへのテキスト出力をするプログラムだったら、 >java nantoka > a.txt で、a.txtにテキストが書き込まれると思います。 試してみてください。 それで、「標準エラー出力」の方は、 リダイレクトをしてもリダイレクトされず、 コンソールにテキストが書き出されます。 標準エラー出力は、通常、エラーが起こったときの 表示に使うもので、 これまでリダイレクトされてしまうと、 ユーザーがエラーを検知できなくなるからです。 ためしに System.out.println("ABCD"); System.err.println("いろはに"); System.out.println("EFG"); System.err.println("ほへと"); と出力するtestプログラムを作って、 >java test と >java test > a.txt として、動作の違いをたしかめてみてください。 (付記:どうしてもエラー出力をリダイレクトしたい場合、 >のかわりに2>を使うことによって可能です。 Linux系ではシェルによって違いがあります)

marukorotama
質問者

お礼

 回答ありがとうございました。 リダイレクトについても気になっていたので、 大変参考になりました。

関連するQ&A