java - qué - diferencia entre System.out.println() y System.err.println()
qué es system out err (5)
El objetivo principal de System.out
es dar salida estándar.
El objetivo principal de System.err
es proporcionar un error estándar.
Miralos
http://www.devx.com/tips/Tip/14698
http://wiki.eclipse.org/FAQ_Where_does_System.out_and_System.err_output_go%3F
¿Cuál es la diferencia entre System.out.println()
y System.err.println()
en Java?
En Java System.out.println()
se imprimirá en el estándar del sistema que está utilizando. Por otro lado, System.err.println()
imprimirá al error estándar.
Si está utilizando una aplicación de consola Java simple, ambas salidas serán las mismas (línea de comando o consola) pero puede reconfigurar las secuencias para que, por ejemplo, System.out
todavía imprima en la consola pero System.err
escriba en un archivo .
Además, los IDE como Eclipse muestran System.err
en texto rojo y System.out
en texto negro de forma predeterminada.
Esos comandos usan diferentes flujos de salida. De manera predeterminada, ambos mensajes se imprimirán en la consola, pero es posible, por ejemplo, redirigir uno o ambos a un archivo.
java MyApp 2>errors.txt
Esto redireccionará System.err
al archivo errors.txt
.
System.out es "salida estándar" (stdout) y System.err es "salida de error" (stderr). Junto con System.in (stdin), estos son los tres flujos de E / S estándar en el modelo de Unix. La mayoría de los entornos de programación modernos (C, Perl, etc.) son compatibles con este modelo.
El flujo de salida estándar se utiliza para imprimir la salida de "operaciones normales" del programa, mientras que el flujo de error es para "mensajes de error". Estos deben estar separados, aunque en la mayoría de los casos aparecen en la misma consola.
Supongamos que tiene un programa simple donde ingresa un número de teléfono e imprime a la persona que tiene ese número. Si ingresa un número inválido, el programa debe informarle de ese error, pero no debe hacer eso como respuesta : si ingresa "999-ABC-4567" y el programa imprime un mensaje de error "No es un número válido" , eso no significa que haya una persona llamada "No es un número válido" cuyo número es 999-ABC-4567. Por lo tanto, no imprime nada en la salida estándar y se imprime el mensaje "No es un número válido" en la salida del error.
Vale la pena señalar que un sistema operativo tiene una cola para System.err y System.out. Considera el siguiente código:
public class PrintQueue {
public static void main(String[] args) {
for(int i = 0; i < 100; i++) {
System.out.println("out");
System.err.println("err");
}
}
}
Si compila y ejecuta el programa, verá que el orden de las salidas en la consola está mezclado.
Un sistema operativo permanecerá en orden si trabaja con System.out o System.err solamente. Pero puede elegir al azar qué imprimir junto a la consola, si usa ambos.
Incluso en este fragmento de código puede ver que el orden se mezcla a veces:
public class PrintQueue {
public static void main(String[] args) {
System.out.println("out");
System.err.println("err");
}
}