2010-02-11 3 views
1

디버그 모드에있을 때 powerbuilder (ver 10.5)가 응용 프로그램 실행 오류를 발생시키고 응용 프로그램을 종료합니다.try/catch 블록 내의 오류로 인해 디버그 모드에서 PowerBuilder가 충돌 함

예를 들어 아래의 3 행이 throw되면 "배열 경계 초과"오류가 발생하고 응용 프로그램이 종료됩니다. 이 (처리 된) 오류를 어떻게 극복하고 나머지 코드를 디버그 할 수 있습니까?

try 
// lstr_passed_values = message.powerobjectparm 
ls_symv_no = gstr_symv_passed_values.is_values[1] 
if isnull(ls_symv_no) or ls_symv_no = "" then 
    is_symv_no="%" 
else 
    is_symv_no = ls_symv_no 
    gstr_symv_passed_values.is_values[1]="" 
end if 
catch (throwable err) 
is_symv_no="%" 
end try 
+0

배열의 요소에 액세스하기 전에 배열의 길이를 확인해 보았습니까? – ilitirit

+0

예,이 방법으로 문제가 해결되지만 try/catch 블록의 용도는 무엇입니까? 런타임시 코드는 예상대로 작동하지만 디버그 모드에서는 try/catch 문을 무시한 것처럼 동작합니다! –

+0

몇 가지 조사가 끝나면 알려진 문제이며 일반 해결 방법 (런타임에 messagebox를 사용하지 않는 것)이 확실하지 않은 것으로 보입니다. http://groups.google.co.za/group/sybase.public.powerbuilder.futures.discussion/browse_thread/thread/e2dc716c08de40c1/085ab54268651245?hl=ko&lnk=gst&q=try+catch+debug#085ab54268651245 – ilitirit

답변

3

디버그로 고생하고 있습니까?

필자는 PB 디버거가 정상적으로 작동한다고 말합니다. 디버깅 개념을 실제로 파악하려고 시도하면 코드를 한 줄씩 단계별로 실행하는 것으로 가정합니다. "배열 경계 초과"오류를 제공함으로써 디버거는 코드에 잠재적으로 처리되지 않은 예외가 있음을 입증했습니다. 따라서 Try-Catch 코드를 여기에 배치했습니다.

디버거가 실제로 그 지점에 도달 할 때까지 예외를 throw하지 않는 것으로 가정합니다. 이것은 디버거의 목적을 상실합니다. 무슨 뜻인지 알 겠어?

이제 디버그 모드에서 특정 코드 블록을 건너 뛰려면 "Set Next Statement"를 사용해야합니다.

아래의 수정 된 샘플 코드에서 1 행에 중단 점을 설정하십시오. 디버거가 중단 점에 도달하면 "변수 편집"문자열 "is_symv_no"를 마우스 오른쪽 단추로 클릭하십시오. 그런 다음 14 번째 줄에 포인트 커서를 놓고 "다음 문장 설정"을 클릭하십시오. 그러면 전체 try-catch 루틴 (라인 2-13)을 우회하여 프로그램을 계속 진행할 수 있습니다.

1 ls_symv_no = "" 
2 try 
3  // lstr_passed_values = message.powerobjectparm 
4  ls_symv_no = gstr_symv_passed_values.is_values[1] 
5  if isnull(ls_symv_no) or ls_symv_no = "" then 
6   is_symv_no="%" 
7  else 
8   is_symv_no = ls_symv_no 
9   gstr_symv_passed_values.is_values[1]="" 
10  end if 
11 catch (throwable err) 
12  is_symv_no="%" 
13 end try 
14 return 
0
사람이 스레드에 실수를 한단다 경우

- 디버깅, 다음의 충돌을 피하기 디버그로 이동하면서 TRY ... CATCH 블록을 통해 당신을 얻을하지 않습니다 "무시"를 클릭하면 ... 예외 PB 디버거에서. 해당 예외 유형에 대해 "계속"옵션을 선택하십시오.

+0

PB 10.5. 2는이 옵션을 제공하지 않는 것 같습니다. –

관련 문제