오늘 동료가 System.err 및 System.out을 사용할 때 몇 가지 사소한 문제에 직면했습니다.
몇 가지 정보를 읽은 후 요약했습니다:
1 두 가지에 대한 JDK 문서의 설명:
out: " 출력 스트림. 이 스트림은 열려 있으며 출력 데이터를 받아들일 준비가 되어 있습니다. 일반적으로 이 스트림은 모니터 출력 또는 호스트 환경이나 사용자가 지정한 다른 출력 대상에 해당합니다.
err: "표준" 오류 출력 스트림. 이 스트림은 열려 있으며 출력 데이터를 받아들일 준비가 되어 있습니다. 일반적으로 이 스트림은 모니터 출력 또는 호스트 환경이나 사용자가 지정한 다른 출력 대상에 해당합니다. 관례적으로 이 출력 스트림은 사용자 출력 스트림(변수 out
의 값)이 일반적으로 모니터링되지 않는 일부 파일이나 기타 대상으로 리디렉션된 경우에도 사용자에게 즉시 주의를 기울여야 하는 오류 메시지나 기타 정보를 표시하는 데 사용됩니다. 계속해서. .
2.out 및 err. 한 가지 차이점은 out은 종종 캐시되는 반면 err은 캐시되지 않는다는 것입니다(기본 설정, 변경 가능). 따라서 표준 오류를 사용하여 무언가를 인쇄하면 즉시 화면에 표시될 수 있는 반면, 표준 출력이 인쇄하는 경우 함께 인쇄하려면 몇 개의 문자가 더 필요할 수 있습니다. 응용 프로그램에서 표준 출력과 표준 오류를 혼합하면 이 문제가 나타날 수 있습니다.
테스트 코드:
public class Test2 {static{ System.out.println("1"); }public static void main(String[] args) { System.err.println("2");new Test2(); }public Test2() { System.out.println("3"); } }
테스트 결과: 1과 3의 위치는 상대적으로 변하지 않으며, 2의 위치는 무작위로 나타나는 것을 피하세요!
3.log4j 로깅이 사용된 경우 System .err은 로그에 기록되지만 System.out은 기록되지 않습니다.
ps: System.err 인쇄는 Eclipse에서 빨간색입니다. System.out은 파란색입니다.
위 내용은 System.err 및 System.out을 사용하는 데 몇 가지 문제가 있습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!