Q&A

  • 델파이 에러 메세지 리스트는 어디에 정의되어 있나요?
안녕하세요?

델파이를 사용하다보면 여러 형태의 에러 리스트가 나나나잖아요.
예를들면....

"Invalid operation"
"invalid parameter"
등등..

이런 메세지는 어디에 정의 되어 있어서,
실제 실행중에 에러가 발생하면 뿌려주는건가요?

정의되어 있는곳을 알고 싶어요...

다른 나라 언어로 보여줘야 하는 상황이거든요..

고수님들 답변 부탁 드립니다..
1  COMMENTS
  • Profile
    김재철 2006.09.08 20:29
    정확히 말하자면 에러 메세지가 아니라 예외 메세지입니다...
    수정이 불가능한 부분도 있고 소스를 수정하게되면 오히려 나중에 귀찮아질 가능성이 큽니다.

    델파이에서 Tools-> Debugger Options-> Integrated Debugging의 체크를 하고나서,
    Run으로 실행해 보시면 EInvalidOperation 과 같은 예외 클래스명과 "Invalid operation" 이라는
    메세지가 보이실 겁니다.

    예외 클래스명을 기억해두시고 예외가 발생하는 부분에 예외 처리를 해주시면 됩니다.

    예) 리스트 박스에 아이템이 들어있지 않는데 아이템을 읽는 경우
    <!--CodeS-->
      ShowMessage(ListBox1.Items.Strings[1]);
    <!--CodeE-->

    이 코드를 디버깅모드에서 실행하면 EStringListError 라는 예외 클래스와 'List index out of bounds(1)' 이라는 예외 메세지가 뜨겠죠

    예) 여러 종류의 예외가 발생하는 경우 처리
    <!--CodeS-->
      try
        ShowMessage(ListBox1.Items.Strings[1]);
      except
        on EStringListError do ShowMessage('리스트의 범위를 초과했습니다(1)');
        on EUnknownError do ShowMessage('알 수 없는 예외입니다.');
      end;
    <!--CodeE-->

    가급적 예외가 발생할 만한 곳에 모두 try..except를 걸어주는 것이 좋습니다.

    // 모든 예외를 무시하고 메세지 출력 안함
    <!--CodeS-->
      try
        ShowMessage(ListBox1.Items.Strings[1]);
      except
        // 아무런 작업 안함
      end;
    <!--CodeE-->

    예외 처리를 하더라도 델파이에서 Run하는 경우에는 예외 메세지가 여전히 출력됩니다.
    하지만 탐색기에서 직접 실행하면 예외 메세지가 출력되지 않으므로 배포하시면 됩니다.