- ベストアンサー
System.err. printlnとSystem.out.printlnはどう違うんでしょうか?
初心者なので今までSystem.out.println文しか見たことがなかったのですが、テキストで急にIOExceptionのcatch文の中にSystem.err. println文が出てきました。 errをoutに書き換えてもエクリプスではチェックされなかったのですが、どういう違いがあるのでしょうか?
- みんなの回答 (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系ではシェルによって違いがあります)
お礼
回答ありがとうございました。 リダイレクトについても気になっていたので、 大変参考になりました。