컴퓨터 엑셀 워드 포토숍 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Previous Post Java/자바] print, println 차이점/차이; System.out.println...Java/자바] 오늘 요일 이름 구하기, 요일명 출력; Get-Print DAY OF TH...자바스크립트] 오늘 요일 이름 구하기, 요일명 출력; JavaScript Get-Print...자바스크립트] 문자열 양쪽 공백 제거, 정규식 사용; Trim Trailing Spaces...자바스크립트] 숫자 여부 판단 함수; 숫자인지 문자인지; isNum, isNumeric, ...HTML] 희귀 한자, 한글 완성형(euc-kr)에 입력 방법; 궉채이 선수의 궉씨 성 쓰...HTML 기초] 가장 간단한 한글 웹페이지 예제 소스: HTM, Hello WorldHTML] 주석문 주석 기호, 웹페이지 소스 코드에 설명 붙이기; Comment Remar...HTML] CSS 주석문 주석 기호, 스타일 시트에 설명 붙이기; Comment Remar...HTML] 자바스크립트 주석문 주석 기호, 코드에 설명 붙이기; JavaScript Com...

Java/자바] System.err.println, out.print, 차이점/차이; System.err.print() 메소드(함수)

Sunday, January 14, 2007

일반적인 문자열을 "표준출력"으로 출력하는 System.out.println() 과 달리,

에러 메시지를 "표준 에러 출력"으로 출력하는 System.err.println() 은 재지향이 되지 않습니다. (업데이트: 윈도우에서는 안되지만, 리눅스/유닉스에서는 에러를 재지향하는 방법이 있습니다.)

둘다 화면으로는 똑같이 출력되지만, 화면 출력을 텍스트 파일로 재지향(Redirection) 해보면 차이가 납니다.

왜냐하면, 에러 메시지는 화면으로만 출력되어야 하고, 파일로 저장되면 곤란하기 때문입니다. 우선, 파일로 재지향되어 버리면, 프로그램에서 에러가 났다는 사실을 알 수가 없고, 파일에 불필요한 메시지도 들어가기 때문입니다.


System.err.print 사용 법 예제


소스 파일명: Foo.java
public class Foo {
  public static void main(String[] args) {

    System.out.println("out.println 은 재지향이 됩니다.");
    System.out.print("out.print 도 재지향이 됩니다.");


    System.out.println(); System.out.println(); // 2줄 줄바꿈


    System.err.println("err.println 은, 재지향이 안됩니다.");
    System.err.print("err.print 도, 재지향이 안됩니다.");

  }
}



위의 예제 컴파일 및 실행 결과 화면:
D:\Z>javac Foo.java && java Foo
out.println 은 재지향이 됩니다.
out.print 도 재지향이 됩니다.

err.println 은, 재지향이 안됩니다.
err.print 도, 재지향이 안됩니다.
D:\Z>
D:\Z>
D:\Z>
D:\Z>javac Foo.java && java Foo > out.txt
err.println 은, 재지향이 안됩니다.
err.print 도, 재지향이 안됩니다.
D:\Z>


둘다 화면으로는 동일하게 출력됩니다. 그러나 > 기호를 사용하여, 화면 출력을 out.txt 라는 파일로 저장해 보면 err.println 의 경우는 파일로 저장되지 않고 계속 화면으로 나옵니다.

현재 디렉토리에 생성된 out.txt 파일의 내용은 다음과 같을 것입니다:

out.println 은 재지향이 됩니다.
out.print 도 재지향이 됩니다.


역시 err.println 으로 출력한 문자열은 파일로 저장되지 않았습니다.


err.println() 과 err.print() 의 차이점은 줄바꿈 문자를 붙이느냐 안 붙이느냐 하는 것뿐입니다. (참고: ▶▶ Java/자바] print, println 차이점/차이; System.out.println() System.out.print() 메소드(함수))


여기에 System.err.println() 을 실제 자바 프로그래밍에서 사용하는 예제가 있습니다: ▶▶ 자바,Java] 텍스트 파일 읽기, 한줄씩 읽어 화면에 출력; 자바 기초


자바 강좌와 각종 예제





업데이트:
위의 포스트에 문제가 있었는데, ukira1 님께서 지적해 주셨습니다.

리눅스/유닉스에서는 에러 메시지도 다음과 같은 방법으로 재지향할 수 있습니다.

리눅스 셀에서는
명령어 2> 파일명
이렇게 하면 "표준 에러 출력" 즉 에러 메시지만 파일로 저장됩니다.

그리고
명령어 &> 파일명
이렇게 하면, "표준 출력"과 "표준에러 출력" 즉 모든 출력이 파일로 저장됩니다.

물론 윈도우에서는 이런 식의 고급 재지향은 불가능합니다.

2 Comments:
At 11:09 AM, Anonymous ukira1 said...

확인해본건 아닙니다만.
쉘에서 보통 에러는 2> 와 같이
리다이렉트 하는데요..
예를 들어서...

> myprog.sh 2> err.log
와 같이 하면 에러로 출력되는 메시지만
리다이렉트 되는데요.
혹시 같은 방식이 아닐까요?

 
At 11:53 AM, Blogger mwultong said...

제가 윈도우를 중심으로 설명하다 보니 그렇게 되었습니다^^;

그렇습니다. 리눅스 bash 에서는 표준에러출력을 재지향 할 수도 있습니다. 윈도우의 명령프롬프트에 비할 수 없이 강력한 것이니까요.

그런데 윈도우에서는 불가능하더군요.

(∩_∩)

 

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Categories
Previous Posts
Monthly Archives
Top