¿Cuál es la diferencia entre System.out.println()
y System.err.println()
en Java?diferencia entre System.out.println() y System.err.println()
Respuesta
En Java System.out.println()
se imprimirá al estándar fuera del sistema que está utilizando. Por otro lado, System.err.println()
imprimirá al error estándar.
Si está utilizando una sencilla aplicación de consola de Java, ambas salidas serán los mismos (la línea de comandos o consola) pero se puede volver a configurar las corrientes de modo que, por ejemplo, System.out
sigue imprimiendo a la consola pero System.err
escribe en un archivo .
Además, los IDEs como Eclipse muestran System.err
en texto rojo y System.out
en texto negro de forma predeterminada.
Esos comandos utilizan 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 redirigirá a System.err
errors.txt
archivo.
'java MyApp 2> errors.txt' qué es' 2> 'y cómo ¿funciona? ¿puedes explicar? – UnKnown
System.out
El propósito principal es dar salida estándar.
System.err
tiene por objetivo principal el error estándar.
vistazo a estas
http://www.devx.com/tips/Tip/14698
http://wiki.eclipse.org/FAQ_Where_does_System.out_and_System.err_output_go%3F
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.
La secuencia de salida estándar se utiliza para imprimir la salida de "operaciones normales" del programa, mientras que la secuencia 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 no válido, el programa debe informarle de ese error, pero no debe hacer eso como la respuesta: Si ingresa "999-ABC-4567" y el programa imprime un mensaje de error "No es válido número ", 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.
Creo que esta es la mejor respuesta, ya que explica el significado de las secuencias. –
Vale la pena señalar que un sistema operativo tiene una cola para System.err y System.out. Considere 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 se compila y ejecuta el programa, se verá que el orden de las salidas de la consola está mezclado.
Un SO se mantendrá 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 se 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");
}
}
"Un sistema operativo tiene una cola para' System.err' y 'System.out'." Esa es una declaración muy general y no necesariamente precisa. ¿Sobre qué base haces esa declaración? [Cita requerida] En una aplicación de consola (como 'cmd' o' terminal'), ambas secuencias ("colas" como las llama esta respuesta) parecen fusionarse (porque se muestran en el mismo emulador de terminal), pero en realidad están separados. Consulte [Diferencia entre 'stdout',' stderr' y 'stdin'] (https://stackoverflow.com/a/3385261/2225787) para obtener más información. –
- 1. console.writeline y System.out.println
- 2. MySQL: diferencia entre ', `,' y"
- 3. Diferencia entre. y #
- 4. Diferencia entre & y &
- 5. ¿Diferencia entre == y caso?
- 6. Diferencia entre objeto y *?
- 7. La diferencia entre $ * y $ @
- 8. ¿Cuál es la diferencia entre ".equals" y "=="?
- 9. VBA: Diferencia entre y y +
- 10. Redirigir System.out.println
- 11. Diferencia entre -Wconversion entre gcc y g ++
- 12. Diferencia entre "__method__" y "método"
- 13. Diferencia entre System.Web.Cache y HTTPContext.Curent.Cache
- 14. Diferencia entre JPA y JDO?
- 15. Diferencia entre XML y SOAP
- 16. Diferencia entre tortoisesvn y CollabNetSubversion
- 17. Diferencia entre interrupción y eventos
- 18. diferencia entre SDL y GLUT
- 19. C# diferencia entre == y equals()
- 20. Diferencia entre java.exe y javaw.exe
- 21. Diferencia entre borrar y eliminar
- 22. Diferencia entre objeto y NSObject
- 23. Diferencia entre iostream y iostream.h
- 24. Diferencia entre monitor y bloqueo?
- 25. ¿Diferencia entre asociación y dependencia?
- 26. Diferencia entre Math.Floor() y Math.Truncate()
- 27. Diferencia entre document.getSelection() y window.getSelection()
- 28. Diferencia entre Monitor.Pulse y Monitor.PulseAll
- 29. Diferencia entre wscript y cscript
- 30. Diferencia entre qt y PyQt4
Además, System.out se almacena temporalmente, y no es System.err –
olvidado de eso, thx para esclarecerlo noelmarkham –
No difamando su respuesta, pero normalmente se denomina salida estándar y error estándar (stdout/stderr) en lugar de salida estándar y error de salida. +1 a modo de disculpa por adelantado ya que, aparte de eso, estás en lo cierto. – paxdiablo