Разница между System.out.println() и System.err.println()

В чем разница между System.out.println() и System.err.println() в Java?

+42
источник поделиться
8 ответов

В Java System.out.println() будет печататься по стандарту из используемой вами системы. С другой стороны, System.err.println() будет печатать стандартную ошибку.

Если вы используете простое консольное приложение Java, оба выхода будут одинаковыми (командная строка или консоль), но вы можете перенастроить потоки, чтобы, например, System.out все еще печатает на консоли, но System.err пишет в файл.

Кроме того, IDE, такие как Eclipse, показывают System.err в красном тексте и System.out по умолчанию в черном тексте.

+58
источник

System.out - это "стандартный вывод" (stdout), а System.err - "выход ошибки" (stderr). Наряду с System.in(stdin), это три стандартных потока ввода-вывода в модели Unix. Большинство современных программных сред (C, Perl и т.д.) Поддерживают эту модель.

Стандартный выходной поток используется для вывода вывода из "обычных операций" программы, а поток ошибок - для "сообщений об ошибках". Они должны быть отдельными - хотя в большинстве случаев они отображаются на одной консоли.

Предположим, у вас есть простая программа, в которой вы вводите номер телефона, и печатает человека, у которого есть этот номер. Если вы введете недопустимый номер, программа сообщит вам об этой ошибке, но не должна это делать в качестве ответа: если вы введете "999-ABC-4567", и программа выведет сообщение об ошибке "Недействительное число", это не означает, что есть человек с именем "Недействительный номер", число которого составляет 999-ABC-4567. Таким образом, он не выводит ничего на стандартный вывод, и на выход ошибки выводится сообщение "Недействительный номер".

+25
источник

Эти команды используют разные выходные потоки. По умолчанию оба сообщения будут печататься на консоли, но возможно, например, перенаправить один или оба из них в файл.

java MyApp 2>errors.txt

Это перенаправит файл System.err в errors.txt.

+4
источник

System.out Основная цель - стандартный вывод.

System.err Основная цель - стандартная ошибка.


Посмотрите на эти

http://www.devx.com/tips/Tip/14698

http://wiki.eclipse.org/FAQ_Where_does_System.out_and_System.err_output_go%3F

+2
источник

System.out.println("wassup"); относится к тем случаям, когда вам необходимо вывести определенный результат, относящийся к правильному вводу, заданному пользователем, тогда как System.err.println("duh, that wrong); это ссылка, показывающая, что предоставленный ввод неправильный или есть какая-то другая ошибка,

Большинство IDE показывают это красным цветом (System.err.print).

0
источник

этот ответ, скорее всего, поможет вам. Это так просто: System.err и System.out оба одинаковы и определены в классе System как ссылочная переменная класса PrintStream как public final static PrintStream out = null; и public final static PrintStream err = null;

означает, что оба реф. переменная класса PrintStream. обычно System.err используется для печати сообщений об ошибках, которые увеличивают возможность программирования для программиста.

Незначительная разница в обоих случаях, когда мы работаем с оператором перенаправления.

0
источник

err является ссылочной переменной типа PrintStream в системном классе. public static final PrintStream err = null out является ссылочной переменной типа PrintStream в классе System. public static final PrintStream out = null System.err.println() используется для отображения сообщения об ошибке на консоли. (в IDE выход System.err.println() выделен красным цветом) System.out.println() используется для печати сообщение на консоли. println() является методом PrintStream.

0
источник

Стоит отметить, что ОС имеет одну очередь для System.err и System.out. Рассмотрим следующий код:

public class PrintQueue {
    public static void main(String[] args) {
        for(int i = 0; i < 100; i++) {
            System.out.println("out");
            System.err.println("err");
        }
    }
}

Если вы компилируете и запускаете программу, вы увидите, что порядок выходов в консоли путается.

ОС останется в правильном порядке, если вы работаете только с System.out или System.err. Но он может произвольно выбирать, что печатать рядом с консолью, если вы используете оба из них.

Даже в этом фрагменте кода вы можете видеть, что порядок иногда смешивается:

public class PrintQueue {
    public static void main(String[] args) {
        System.out.println("out");
        System.err.println("err");
    }
}
-1
источник

Посмотрите другие вопросы по меткам или Задайте вопрос