Como sé, ambos salen y son de la misma clase PrintStream
. ¿Alguien puede decirme cómo difieren ... cómo cambiaron su comportamiento?diferencia entre system.out y system.err
Respuesta
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.
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.
+1 para el ejemplo de redirección. –
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.
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.
- 1. Redirigir System.out y System.err a slf4j
- 2. java: "final" System.out, System.in y System.err?
- 3. Desactivar System.err
- 4. Redireccionamiento System.out a JTextPane
- 5. MySQL: diferencia entre ', `,' y"
- 6. Diferencia entre objeto y *?
- 7. Diferencia entre. y #
- 8. ¿Diferencia entre == y caso?
- 9. La diferencia entre $ * y $ @
- 10. Diferencia entre & y &
- 11. ¿Por qué las sentencias System.err se imprimen primero a veces?
- 12. VBA: Diferencia entre y y +
- 13. Diferencia entre -Wconversion entre gcc y g ++
- 14. En system.out, clarifique
- 15. Diferencia entre subprocess.Popen y os.system
- 16. Diferencia entre decimal y decimal
- 17. ¿Diferencia entre trazo y relleno?
- 18. Diferencia entre interrupción y eventos
- 19. Diferencia entre netTcpContextBinding y netTcpBinding
- 20. ¿Diferencia entre brújula y sass?
- 21. Diferencia entre "__method__" y "método"
- 22. Diferencia entre Mealy y Moore
- 23. Diferencia entre HashSet y HashMap?
- 24. diferencia entre ajax y enviar
- 25. Diferencia entre sistema y shell_exec
- 26. Diferencia entre Style y ControlTemplate
- 27. Diferencia entre relativo y absoluto
- 28. Diferencia entre window.location.href y top.location.href
- 29. Diferencia entre strncpy y memcpy?
- 30. diferencia entre SDL y GLUT
http://en.wikipedia.org/wiki/Standard_streams – stacker