|
혹시 참고가 될까 해서 글을 올립니다.
아래분이 말씀한 try.. catch.. 문을 사용해서 익셉션을 처리를 할 수 있습니다.. 그런데 C++ Builder IDE 는 IDE 상의 Exception 이 사용자 Exception 보다 더 우선순위를 차지하는 것 같더군요...
그래서 아마 Exception 처리를 하고자 하는 곳에서 그냥 try... catch... 를 사용한다면 원하는 결과를 얻지 못할 수도 있습니다... ( 저도 이것때문에 고생하다가 최보현 님이 갈캬주셔서 지금은 잘 사용하고 있습니다. 이 기회에 다시한번 최보현님께 감사를... ^^; )
우선은 님이 Exception 처리를 하고자 하는 곳을 try... catch... 문으로 감쌉니다.. try... catch... 구문은 아래분이 말씀하신것 처럼 하면 될 것입니다...
그리고 나서.. Tools|Debug Options 에 가보면 창의 가장 밑에 Intergrated debugging 이라는 체크박스가 있는데 그 체크를 풀어주셔야 사용자 Exception 이 처리가 됩니다..
이 체크를 풀지 않으면 사용자 Exception 처리가 잘 되지 않는것 같더군요.. ^^;
그럼 참고가 되었으면 하네요.. 즐프하세용... ~~~
몰라요 님이 쓰신 글 :
: 아무 에러 박스도 없이 Exception이 일어나 그냥 그 함수가 끝납니다.
: exception을 잡으려 " upsqlSEND->ModifySQL->Clear(); "문에
: try..catch도 해보았지만 어떤 exception class인지 몰라서 힘듭니다.
: 모든 exception class를 포함하는 class는 없나요??
: TQuery, TUpdateSQL을 동적생성했으며 쿼리의 OnUpdateRecord 이벤트에
:
: qrySEND->OnUpdateRecord = UpdateSEND; 하였습니다.
:
:
: 호출 :
: UpdateSEND(qrySEND, ukModify, uaFail);
:
:
: void __fastcall TProcess::UpdateSEND(TDataSet* DataSet, TUpdateKind UpdateKind, TUpdateAction &UpdateAction)
: {
: TUpdateSQL *upsqlSEND = (TUpdateSQL *)((TBDEDataSet *)DataSet)->UpdateObject;
:
:
: switch (UpdateKind)
: {
: case ukModify:
:
: //////////////////////// 여기서부터 그냥 끝남
: upsqlSEND->ModifySQL->Clear();
: upsqlSEND->ModifySQL->Add("update SEND set SND_FLAG = :DELETED, SND_SENDDATETIME = :QSENDDATETIME,");
:
: upsqlSEND->ModifySQL->Add("SND_NEXTDATETIME = :QNEXTDATETIME, SND_CALLCOUNT = :QCALLCOUNT");
: upsqlSEND->ModifySQL->Add("where SND_NUM = :QRECNUM");
:
: upsqlSEND->SetParams(UpdateKind);
: upsqlSEND->Query[UpdateKind]->ParamByName("DELETED")->Value = FLAG_DELETED;
: upsqlSEND->Query[UpdateKind]->ParamByName("QSENDDATETIME")->Value = dtdSendQ.senddate;
: upsqlSEND->Query[UpdateKind]->ParamByName("QNEXTDATETIME")->Value = dtdSendQ.senddate + g_cfgData.intertime;
: upsqlSEND->Query[UpdateKind]->ParamByName("QCALLCOUNT")->Value = dtdSendQ.callcount;
: upsqlSEND->Query[UpdateKind]->ParamByName("QRECNUM")->Value = dtdSendQ.q_keynum;
: break;
: case ukInsert:
: dlgLog ("insert");
: break;
: case ukDelete:
: dlgLog ("delete");
: }
:
: upsqlSEND->ExecSQL(UpdateKind);
: UpdateAction = uaFail;
:
: delete upsqlSEND;
: }
|