자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi try catch가 작동하지 않는 현상
2015.10.27 10:35
DB INSERT시 아래와같이
ExecSQL; 명령어를 try ~ catch 문으로 감싸주었습니다.
SQL.Clear;
SQL.Add(' INSERT INTO XXX(x1,x2');
SQL.Add(' VALUES(:x1, :x2');
ParamByName('x1').AsString := '01';
ParamByName(':x2').AsString := '0222222';
try
ExecSQL;
except
on E: Exception do
begin
showMessage("에러");
Exit;
end;
end;
이렇게 해주면
sql에러발생시 showMessage("에러"); 문장이 실행될줄 알았는데,
시스템 에러메세지가 출력됩니다.
"이진데이터가 ....." 이렇게요.
제가 어떤걸 놓치고 있을까요?
위 상황에서 제가 원하는 메세지를 출력하는 방법이 있는지 궁금합니다.
Delphi try catch가 작동하지 않는 현상
2015.10.27 10:35
DB INSERT시 아래와같이
ExecSQL; 명령어를 try ~ catch 문으로 감싸주었습니다.
SQL.Clear;
SQL.Add(' INSERT INTO XXX(x1,x2');
SQL.Add(' VALUES(:x1, :x2');
ParamByName('x1').AsString := '01';
ParamByName(':x2').AsString := '0222222';
try
ExecSQL;
except
on E: Exception do
begin
showMessage("에러");
Exit;
end;
end;
이렇게 해주면
sql에러발생시 showMessage("에러"); 문장이 실행될줄 알았는데,
시스템 에러메세지가 출력됩니다.
"이진데이터가 ....." 이렇게요.
제가 어떤걸 놓치고 있을까요?
위 상황에서 제가 원하는 메세지를 출력하는 방법이 있는지 궁금합니다.
ExecSQL 메소드를 호출하는 부분을 예외처리하는 기능은 이미 많은 개발자들이 사용하고 있습니다.(어떤 컴포넌트를 사용하는지 알수가 없네요^^)
아무래도 데이터베이스 연결을 설정하는 부분을 살펴보시는 것이 좋을 것 같습니다.
좀 더 기술적인 팁을 드리면 디버그 모드로 정확히 어떤 부분에서 메시지가 표시되는지, 그리고 예뢰를 발생하는지 메시지를 표시하고 예외를 발생하지 않는지 확인해보시면 해결하실 수 있을 것으로 보입니다.
위 코드가 구현된 메소드(함수, 프로시저)안에 브레이크 포인트(코드라인 선택 후 F5) 추가 후 델파이의 Run > Run 메뉴를 이용해 디버그 모드로 실행하고, F8로 다음 라인으로 쭈욱 이동해서 어떤 라인에서 이슈가 발생하는지 확인해 보시기바랍니다.
해당 라인의 코드 안쪽을 보려면 F7 버튼을 눌러 메소드 안으로 디버깅 해보시다 보면 어떤 라인에서 이슈가 발생하는지 알수 있을 것입니다.