[JAVA] System.error.println()이란

2021. 7. 28. 09:34Web


흔히들 말한다. in은 '표준'입력, out은 '표준'출력이라고.

'표준'이 모니터, 키보드, 마우스를 의미하는 것도 알고, 표준이 아닌 걸로 파일 입출력 등이 있다는 것도 안다.

근데 error나 out이나 println하면 같아보이는데 뭐가 다르냐 이거다.


 

일단, error도 '표준'에러다. 으아니 그럼 대체 뭐가 다르단 거요.

스트림이 다르다.

하나의 스트림은 하나의 처리만 할 수 있다. a와 b가 연결되어 있을 때 입출력을 하려면 두개의 스트림이 있어야한다.

하나는 입력을, 하나는 출력을. 어? 그럼 error도 설마? 그렇다 새 스트림이 생성된다.

그럼 뭐가 그렇게 다르길래 error의 스트림이 따로 있냐. 똑같은 출력 아니냐.

error는 저장하지 않는다.  무조건 모니터에 띄우는 거다. 에러라는 건 생기자 마자 개발자한테

"사고 났다 사고 났어!!! 으아아아아 여기 좀 보소!!" 해야 하는 거다.

 

주의

이클립스의 경우 생기는 문제인데, sysout과 syserr의 처리 스트림이 다르다 보니 순서가 무작위로 나오는 경우가 있다.

처음 실행에는 sysout이 먼저 출력되고 다음 실행에는 syserr가 먼저 나올 수 있다.

이건 이클립스의 문제다. 몇 없는 내 잘못이 아닌 경우 중 하나라고 할 수 있다.

 

 

 

참고

 

http://mwultong.blogspot.com/2007/01/java-systemerrprintln-outprint.html

https://pythonq.com/so/java/1606035