사용자 예외를 정의해서 사용하고 있습니다
type
EUserDefError = Class(Exception);
try
if length(edtnm.Text) = 0 then
edtnm.SetFocus;
raise EUserDefError('필수항목입니다 재입력하세요');
end;
except
end
처음에는 raise 부분에 예외가 처리가 되더만 현재는 그냥
'필수항목입니다 재입력하세요'라는 메세지가 출력되지않고
그냥 except내로 바로 처리가 되어 버립니다...
델6을 사용하고 있습니다. 아시는분 답변 부탁드립니다.
넘겨준 에러메세지는 raise가 출력해주는게 아닙니다.
메세지 루프까지 예외가 전달되면 그쪽의 Application.HandleException에서
에러메세지를 표시하게 됩니다. 위에서는 try..except를 사용하여 예외가
처리되 없어져 버리므로 메세지 루프까지 전달되지 않는것이죠.
그래서 try..except를 사용할때는 예외를 재발생하여 예외를 유지시켜줘야
합니다.
try
if length(edtnm.Text) = 0 then
edtnm.SetFocus;
raise EUserDefError('필수항목입니다 재입력하세요');
end;
except
... // 예외 처리
raise; // 예외 재발생
end
그리고 위의 루틴처럼 예외를 제거하시려면 다음처럼 해야합니다.
try
if length(edtnm.Text) = 0 then
edtnm.SetFocus;
raise EUserDefError('필수항목입니다 재입력하세요');
end;
except
Application.HandleException(Self);
end; // 이후 예외는 제거됩니다.