Ответ 1
Why does this happen?
Это связано с тем, что out
и err
- это два разных потока вывода. Однако, оба они печатают на консоли. Поэтому вы не видите их как разные потоки. Более того, когда вы выполняете out.println()
, не гарантируется, что вы увидите вывод на консоли, как только оператор будет выполнен. Вместо этого строки обычно (в зависимости от системы) хранятся в выходном буфере (если хотите), который затем обрабатывается системой для вывода вывода из буфера на экран.
Solution :(
Хотя, поскольку Eng.Fouad указал, что вы можете использовать setOut(System.err)
или setErr(System.out)
, чтобы упорядочить их, я бы все же не предлагал это делать, когда вы на самом деле помещаете это в приложение (используйте его только для целей отладки).
Что предлагает предлагаемое решение, так это то, что он будет использовать только один поток как для стандартного вывода, так и для стандартной ошибки, что, по-моему, не очень хорошо.