2010-05-24 13 views

Respuesta

3

Van al sistema stdout y stderr, respectivamente. En la mayoría de los sistemas operativos, estos son distintos y se pueden enviar a diferentes lugares. Por ejemplo, esto podría ser útil si el resultado de su programa fuera analizado por otro programa: si necesitara reportar un error, stderr normalmente sería el mejor lugar para ello, ya que podría haberlo configurado para llamar la atención de un humano.

12

La diferencia no es evidente porque, por defecto, en la mayoría de los sistemas operativos se escriben en la consola (el mismo archivo, la consola también es un archivo). Sin embargo, puede escribir System.out en un archivo y System.err escribir en la consola (monitor): este es solo un caso.

escribir un programa que emite dos mensajes System.out y System.err, y probar este:

java MyProgram > out.txt 2> err.txt # On a *NIX. 

System.out mensajes irán a out.txt y System.err mensajes a err.txt. El punto básico para recordar es pensar System.out y System.err como flujos en archivos (que es lo que son) en lugar de un mecanismo para mostrar en el monitor, que es lo que asumí como principiante.

+3

+1 para el ejemplo de redirección. –

2

Tienen el mismo comportamiento. Pero primero (out) es una referencia al flujo de salida estándar (por defecto es una consola). Y segundo (err) es una referencia al flujo de error estándar (de manera predeterminada también es una consola).

Pero si lo desea, puede cambiar una referencia, o puede agregar un envoltorio/filtro a cada una de ellas.

Mi IDE, por ejemplo, muestra la salida de la corriente err en colores rojos.

0

System.out envía la salida al flujo de salida estándar. System.err envía la salida al flujo de error estándar. Por defecto, ambos escriben en la consola.

Sin embargo, la ventaja es que las dos secuencias se pueden redirigir para que se pueda redirigir la salida system.out a su archivo de registro normal y se puede redirigir la salida System.err a un registro de errores.