|
뭐... 예외가 발생할 만한 곳에서 try문으로 처리할 수도 있겠지만...
만약 프로젝트에서 그런 곳이 여러군데라면 상당히 번거롭겠지요.
한방에 처리하는 간단한 방법은.. TApplication::OnException 이벤트 핸들러를 작성하는 것입니다.
다음은 제가 쓰고 있는 코드의 일부를 약간 수정한 것입니다.
void __fastcall TForm1::ApplicationEventsException(TObject *Sender, Exception *E)
{
if(dynamic_cast<EIdSocketError *>(E)!=NULL)
{
int ErrorCode = ((EIdSocketError *)E)->LastError;
switch(ErrorCode)
{
case 10050: ShowMessage("네트워크가 다운되었습니다."); break;
case 10051: ShowMessage("네트워크에 도달할 수 없습니다."); break;
case 10054: ShowMessage("서버에서 강제로 연결을 종료하였습니다."); break;
case 10060: ShowMessage("서버에 연결 시도중 타임아웃되었습니다."); break;
case 10061: ShowMessage("서버에 연결할 수 없습니다."); break;
case 10064: ShowMessage("서버가 다운되었습니다."); break;
case 10091: ShowMessage("현재 시스템에 네트워크가 존재하지 않습니다."); break;
default: ShowMessage("알 수 없는 소켓 에러입니다.\r\n" + E->Message);
}
}
}
그럼..
pili 님이 쓰신 글 :
: 읽어 주셔서 감사합니다..
:
: 다름이 아니라 인디소켓를 사용하면서.. 뜨는 소켓에러를
:
: 안뜨게끔 또는 사용자의 메시지 박스로 대체 하고 싶은데..
:
: 예를 들자면 연결이 되어 있다가.. 렌선이 빠진경우.. 이런경우..
:
: 데이터를 전송하려고 하면 에러창이 계속 뜨는데..
:
: try문으로 사용자 메시지를 지정해놓음 메시지가 둘다(사용자, 인디소켓에러) 이넘좀 안뜨게 할 수 있는 방법좀...
:
: 암튼 읽어 주셔서 감사합니다.
|