Jak wiem, zarówno out, jak i err są tej samej klasy PrintStream
. Czy ktoś może mi powiedzieć, jak się różnią ... jak zmieniali swoje zachowanie?Różnica między system.out a system.err
Odpowiedz
Idą odpowiednio do strumieni systemowych stdout i stderr. W większości systemów operacyjnych są one różne i mogą być przesyłane do różnych miejsc. Na przykład może to być użyteczne, jeśli dane wyjściowe twojego programu mają zostać przeanalizowane przez inny program - jeśli trzeba zgłosić błąd, stderr będzie zwykle lepszym miejscem dla niego, ponieważ mógłbyś ustawić go tak, aby zwrócić na siebie uwagę człowieka.
Różnica nie jest oczywista, ponieważ domyślnie w większości systemów operacyjnych są one zapisywane na konsoli (ten sam plik, konsola jest również plikiem). Możesz jednak zapisywać do pliku System.out
i zapisywać na konsoli (monitorze) - to tylko jeden scenariusz.
Napisz program, który emituje zarówno wiadomości System.out i System.err i spróbuj tego:
java MyProgram > out.txt 2> err.txt # On a *NIX.
System.out
wiadomości trafi do out.txt i System.err
komunikaty do err.txt. Podstawowym punktem, o którym należy pamiętać, jest myślenie o System.out i System.err jako strumieniach do plików (czyli o tym, czym są) zamiast mechanizmu do wyprowadzania na monitorze, co uważałem za początkującego.
+1 dla przykładu przekierowania. –
Mają takie samo zachowanie. Ale pierwszy (out) jest odniesieniem do standardowego strumienia wyjściowego (domyślnie jest to konsola). A drugi (err) jest odniesieniem do standardowego strumienia błędów (domyślnie jest to również konsola).
Ale jeśli chcesz, możesz zmienić odniesienie, lub możesz dodać opakowanie/filtr do każdego z nich.
Moje IDE, na przykład, pokazuje wyjście ze strumienia err
w czerwonych kolorach.
System.out wysyła dane wyjściowe do standardowego strumienia wyjściowego. System.err wysyła dane wyjściowe do standardowego strumienia błędów. Domyślnie oba z nich zapisują na konsoli.
Jednak korzyścią jest to, że dwa strumienie mogą zostać przekierowane, aby można było przekierować wyjście system.out do normalnego pliku dziennika i można by było przekierować wyjście System.err do dziennika błędów.
- 1. Różnica między obiektem a *?
- 2. Różnica między jquery a $
- 3. Wyłączyć System.err
- 4. Różnica między String [] a i String ... a
- 5. Różnica między bip pid a $$
- 6. Różnica między kodowaniem a sortowaniem?
- 7. Różnica między onbeforeunload a onunload
- 8. Różnica między OpenCV a OpenCL
- 9. Różnica między wysokością a tłumaczeniemZ
- 10. Różnica między ApplicationInfo a PackageInfo?
- 11. Różnica między CMAKE_PROJECT_NAME a PROJECT_NAME?
- 12. Różnica między autoconf a autoreconf
- 13. Różnica między transakcją a transakcjąScope
- 14. Różnica między File.Copy a File.Move
- 15. Różnica między _declspec a __declspec?
- 16. Różnica między repozytorium a usługą?
- 17. Różnica między CCNode a CCLayer?
- 18. różnica między * y ++ a ++ * y?
- 19. Różnica między IPFS a Filecoin?
- 20. Różnica między systemem a shell_exec
- 21. Różnica między Redis a kafka
- 22. Różnica między dodawaniem a dodawaniem
- 23. Różnica między DisplayFor a ValueFor
- 24. Różnica między @EntityScan a @ComponentScan
- 25. Różnica między DataSource a DataSet
- 26. Różnica między LIST_HEAD_INIT a INIT_LIST_HEAD
- 27. Różnica między GetHostEntry a GetHostByName?
- 28. Różnica między Object.getPrototypeOf a __proto__
- 29. Różnica między CHOICE_MODE_MULTIPLE a CHOICE_MODE_MULTIPLE_MODAL?
- 30. Różnica między WebMvcConfigurationSupport a WebMvcConfigurerAdapter
http://en.wikipedia.org/wiki/Standard_streams – stacker