finally를 쓰세요 코드

제발 좀-_-
이게 뭡니까-_-

try
{
  connection = SqlHelper.GetConnection();
  ~~~~~~~
  connection.Close();
}
catch(Exception ex)
{
  if(connection != null) connection.Close();
  rtn.ReturnCode = (int)RETURN_CODE.ERROR;
  throw ex;
}

=============>

try
{
  connection = SqlHelper.GetConnection();
  ~~~~~~~
}
catch(Exception ex)
{
  rtn.ReturnCode = (int)RETURN_CODE.ERROR;
  throw;
}
finally
{
  if(connection != null) connection.Close();
}

최소한-_- 이렇게 되어야 하지 않겠나 (...)

사실은-_-...
끝에 return rtn; 이 있는데-_-....
어차피 실패하면 거기는 flow가 안 닿는거고-_-
그러면 result 객체는 왜 쓰는거고-_-
(차라리 bool을 썼으면 그냥 눈 감고 이해한다-_-)
이건 C를 쓰자는건지 C#을 쓰자는건지 헷갈리는 시츄에이션-_-

throw;할걸 왜 throw ex;해서 멀쩡한 타입을 뭉개고-_-

학부생도 이런 코드는 안 짠다 -_-

으부어어어엉
천상 이렇게 살아야 되나-_-..?

몰라몰라 개복치라니 (......)

하여간..이런 환경에서도 뭔가 돌아가는 것처럼 보이는
product가 나온다는 것 자체가 기적이다 기적-_-..
돌아가는 것처럼-_-만 보이니까 프로젝트가 끝이 안 나긴 하지만-_-..

트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://www.xeraph.com/tb/1004962 [도움말]

덧글

  • decoder 2006/01/05 22:13 # 답글

    무단으로 덧글 남겨서 죄송합니다만. ^^;
    finally 문에서도
    finally {
    try {
    if (conn != null) {
    conn.close();
    }
    } catch (SQLException e) {
    }
    }
    이렇게 쓰는 경우가 있던데요, 위에서 작성하신 것과 차이는 무엇인가요? ^^;;
  • xeraph 2006/01/05 22:18 # 답글

    잘못 작성된 코드라는 차이지요 ^^; 자원 해제 작업은 논리적으로 절대 예외를 발생시켜서는 안 되는 코드 중 하나이지요. 확실히 해두려면 API를 체크해야겠지만 말입니다. 상식적으로는~.
  • decoder 2006/01/05 22:24 # 삭제 답글

    그렇군요. 그동안 별 생각없이 썼었는데 "자원해제"라고 생각하니, 꼼꼼하게 작성해야 겠군요. 좋은 지적 감사합니다. (__)
  • xeraph 2006/01/05 22:27 # 답글

    별 말씀을 (__) C++ 세계의 예를 들자면, 소멸자에서 예외가 발생하는 경우 시스템이 아예 멎어버린답니다.
댓글 입력 영역