달력

122019  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  

흔치 않은 장면을 캡처했습니다.


문구가 재밌네요.

A team of highly trained monkeys has been dispatched to deal with this situation.


via: https://www.facebook.com/groups/codingeverybody/permalink/677893238917882/

Posted by 케누 kenu허광남

댓글을 달아 주세요

http://www.coderanch.com/t/483441/Android/Mobile/Host-unresolved-www-google-com 

Posted by 케누 kenu허광남

댓글을 달아 주세요

제일 처음 자바를 시작했을 때, 에러(Error와 Exception 나뉘지만 에러로 표기합니다)화면을 보고 깜짝 놀랬습니다.

2008-10-06 13:27:06 ApplicationDispatcher[/] Servlet.service() for servlet download threw exception
java.lang.IllegalStateException: getWriter() has already been called for this response
        at org.apache.coyote.tomcat5.CoyoteResponse.getOutputStream(CoyoteResponse.java:568)
        at org.apache.coyote.tomcat5.CoyoteResponseFacade.getOutputStream(CoyoteResponseFacade.java:148)
        at kr.pe.okjsp.DownloadServlet.doGet(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704)
        at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:474)
        at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:409)
        at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
        at kr.pe.okjsp.ControllerServlet.doGet(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
... 중략 ...
        at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:619)

저런 식으로 우수수 떨어지는 에러메시지는 초보에게는 공포감을 일으키기 충분합니다. "내가 그 정도로 잘못했는지 정말 몰랐어요"라는 감정이 생기죠. 사실 에러메시지의 상단 2~3줄만 봐도 문제의 원인을 파악할 수 있는데, 스택트레이스(Stack Trace)라 불리는 사정없는 에러메시지는 정말 "안 좋아"였습니다.

try{...} catch(Exception e) { System.out.println(e.getMessage()); }

저런 메시지 폭탄을 피하기 위해서 위 코드를 통해 핵심 메시지만 봅니다. 이 포스팅의 핵심은 저기서 나온 메시지들과 친해지라는 것입니다. 아마 자주 보일 것입니다.

가까이 하기 어려운 사실 하나는 "영어"로 된 메시지라는 것이겠죠. 영어는 못해도 자바는 좀 하신다면 공개된 소스나 디컴파일을 통해서 저 메시지 생성부분을 찾아볼 수 있습니다. 더구나 자바의 기본 라이브러리는 공개되어 있습니다. src.zip 파일이 그것이죠.

이클립스 툴이나 텍스트 에디터 등을 통해서 에러 메시지를 검색해보면 해당 부분의 소스를 볼 수 있을 것입니다.

또 다른 방법은 구글링을 통해서 소스를 검색해 볼 수도 있습니다. 위 메시지의 경우 검색어를 다음과 같이 넣습니다.


따옴표("")로 감싼 이유는 단어 구분해서 찾지 말고 문구 그대로 검색하라는 의미이고 filetype:java 는 확장자가 java인 파일만 검색하라는 뜻입니다.

이런 식으로 소스를 찾아서 에러원인을 볼 수 있다면, 아마 문제해결(Troubleshooting) 능력이 많이 좋아질 것입니다.

버그와 에러는 다르죠. 에러 메시지! 사라지지 말고 함께 해요.

ps. 공통 프레임워크 만드시는 분들 에러 씹지 말고 보내주세요. ^^;
Posted by 케누 kenu허광남

댓글을 달아 주세요

  1. npnglife  댓글주소 수정/삭제 댓글쓰기 2008.10.06 15:18 신고

    kenu님의 센스있는 구글검색이 더욱 도움이 됩니다.

  2. 정주Go  댓글주소 수정/삭제 댓글쓰기 2008.10.07 10:17

    오홋 좋은거 배우고 갑니다. 꾸벅 _ _