2012년 7월 6일 금요일

android debugging 1

블로거 통계 조작으로 아직도 기분이 매우 나쁘지만.

파일 첨부도 안되는 이곳을 블로그로 하기로 결정 했기에 어쩔 수 없다.

-----------------------------------------------------------------------------------

프로그램을 만들다 보면 cursor를 빈번하게 사용하게 된다.

inputstream이나 output stream 또한 그렇다.

런타임 때 문제가 되는 것이 close를 안해서 인데

이게 생각보다 쉽지가 않다.

보통 까먹는다.

이게 가장 큰 이유고.


try catch문에 들어 갔을 때에도 문제가 된다.

try 구문 실행중에 Exception을 만나면 그 하위는 실행이 안되고

catch를 타버리는데 try 안쪽에 close가 있다면 닫히지 않는 것이다.



if 구문도 문제가 된다.

if(특정 상황) 에서 { 어쩌구 저쩌구 c.close(); } 해놓고
else
에는
close 하지 않으면 else 탈 때 close가 되지 않는다.



API 중에 Exception이 가능한 애들은 다 try catch를 해줘야 한다. 가령
int abc = Integer.parseInt(abc);
의 경우
NumberFormatException
이 날 수 있는데 try catch가 없으면 해당 메소드는 비정상 종료 된다.
그런 때 커서나 입출력 스트림같은게 오픈되어 있으면 close 하지 못해서 심각한
오류가 될 수도 있다.

그리고 이런 구문의 경우

try {
writer.startTag("", "Method");
writer.attribute("", "ID",
c.getString(c.getColumnIndex(TasksTbl._ID)));
writer.attribute("", "Cmd", "New");
sendData(writer, c);
writer.endTag("", "Method");
} catch (Exception e) {
if (c != null) c.close();
}

catch가 Exception이 아니라 IllegalXXX 같은 특정 Exception인 경우
다른 오류가 발생했을 때 커서를 못 닫으니
Exception 캣치는 꼭 마련해야 한다.




간과하기 쉬운 것들이지만

나중에 개고생 하게 만든다.

이상 개방위 - 개고생 방지 위원회.

댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

대학원생의 투고 지도 ④ (완결) — 논문의 수준이란 무엇인가: 사다리와 사분위, 첫 논문 전략

완결편이다. "논문 수준"이라는 말을 해부하고, 에듀테크 석사생의 첫 논문 전략으로 마친다. 학위논문과 학술지 논문은 다른 장르다 먼저 가장 흔한 혼동부터. 학위논문(thesis)은 "내가 연구를 수행할 줄 안다...