黑马程序员技术交流社区

标题: 今天刚遇到的不解的问题,忘大虾们帮帮忙 [打印本页]

作者: 权跃杰    时间: 2012-8-1 21:20
标题: 今天刚遇到的不解的问题,忘大虾们帮帮忙
System.out和System.err输出效果一样啊,有什么区别啊?
作者: 王晓龙    时间: 2012-8-1 21:25
一个是标准输出流,一个是标准错误流,
一般都是一样的,只是有些时候不一样,比如 有IDE的情况下,会用不同的颜色来显示不同的流的内容
作者: 王广彬    时间: 2012-8-1 21:27
System.out和System.err都是PrintStream的实例化对象,而且通过实例代码可以发现,两者都可以输出错误信息,但是一般来讲System.out
是将信息显示给用户看,是正常的信息显示.而System.err的信息正好相反是不希望用户看到的,最好直接在后台打印,是专门显示错误的.
所以如果要想输出错误信息的时候最好不要使用System.out,最好是使用System.err.

作者: 黑马李文    时间: 2012-8-1 21:27
都是输出流,没有本质区别,err是运行期异常和错误反馈的输出流的方向。
但是 有两点比较重要:
  (1)System.out.println 能重定向到别的输出流,这样的话你在屏幕上将看不到打印的东西了,如输出到一个txt的log日志中.
  (2)而System.err.println只能在屏幕上实现打印,即使你重定向了也一样。
  
要说 最直接的区别的话:
就是 如果 你使用err打印出的 字符串,再eclipse的console会显示成红色的哦。 {:soso_e113:}
作者: 王广彬    时间: 2012-8-1 21:32
给你个例子看:
public class SystemerrDemo {
        public static void main(String args[]){
                String str="Hello";
                try{
                        System.out.println(Integer.parseInt(str));//转型
                }catch(Exception e){
                        System.err.println(e);
                }
        }
}
作者: 余明辉    时间: 2012-8-1 21:39
运行一下这个就知道了,原则上System.err可以重定向 ,但在web开发的时候,一般容器会把System.err和System.out重定向到不同的文件中,所以普通的输出就用System.out,而错误信息的输出就用System.out
//-------------------------
import   java.io.File;
import   java.io.FileOutputStream;
import   java.io.PrintStream;

public   class   B   {
    public   static   void   main(String[]   args)   {
        try   {
            System.setOut(new   PrintStream(new   FileOutputStream(new   File( "c:/test.txt "))));
            System.out.println( "haha ");
        }   catch   (Exception   e)   {
            e.printStackTrace();
        }
    }
}
一般的信息和错误的信息分开来比较好
作者: hello world    时间: 2012-8-1 22:11
System.out和System.err主要区别就是System.err用于显示错误消息,或者显示那些即使用户输出流已经重定向到通常不被连续监视的某一文件或其他目标,也应该立刻引起用户注意的其他信息。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2