< 이전 | 다음 >

Perl 오류 처리

오류 처리를 위해 코드에서 Perl eval 명령문을 사용할 수 있습니다.

Rational ClearQuest API의 루틴에서 예기치 않은 조건이 발생하는 경우 예외가 발생합니다. 호출 프로그램이 예외를 포착하지 못하면, 언어 해석기가 프로그램을 종료합니다. Rational ClearQuest API 호출이 실패할 가능성이 있는 경우 예외를 포착하여 처리해야 합니다.

Perl eval 문을 사용하여 오류를 분석하여 Perl 오류를 처리하는 표준 방법을 사용하십시오. 다음 구문을 사용하십시오.
eval {enter statements you want to monitor}; 
런타임 시 Perl 엔진은 eval 블록의 명령문에 오류가 발생하면 나머지 eval 블록을 건너뛰고 $@를 해당 오류 텍스트로 설정합니다.예를 들어, 다음과 같습니다.
eval{$objectName->MethodName();};
 if ($@)
     { 
       print "Error using MethodName method. Error: $@\n";
     } 
else
     {
      # continue without error ...
     } 

일반적으로 실패가 예상되는 몇 개의 함수는 이 경우의 예외입니다. 특히, validate field 및 set field 함수는 예외를 발생시키는 대신 오류 표시를 리턴합니다. 자세한 정보는 오류 검사 및 유효성 검증을 참조하십시오.

오류 검사

Rational ClearQuest API의 많은 메소드 및 특성에 대해 리턴값을 검사하여 호출이 오류를 리턴하는지 여부를 검증해야 합니다.

오브젝트를 리턴하는 함수 호출의 경우, 지정된 오브젝트가 없으면 조건을 검사해야 합니다. 예를 들어, 수집 오브젝트의 Item 메소드를 호출하는 경우 지정하는 오브젝트가 콜렉션에 없으면 리턴값은 Perl에 대해 정의되지 않은 오브젝트입니다. 다음을 사용하여 이 조건을 발견할 수 있습니다.
if (!defined($result)) { ... };

오류 문자열 리턴값을 가지는 함수 호출의 경우, 오류가 없으면 값이 비어 있고 그렇지 않으면 오류에 대한 설명이 들어 있는 문자열이 리턴됩니다. 메소드 호출 결과를 확인할 수 있으며, 값이 비어 있지 않은 경우에는 변수에서 문자열 값으로 오류를 검색할 수 있습니다.

예를 들어, Entity 오브젝트 SetFieldValue 메소드는 문자열 값을 리턴하는 것으로 정의됩니다. 필드 변경이 허용되고 오퍼레이션에 성공하면 이 메소드는 빈 문자열을 리턴합니다. 그렇지 않고 오퍼레이션이 실패하면, 이 메소드는 오류에 대한 설명이 들어 있는 문자열을 리턴합니다.

올바르지 않은 필드를 지정하면, 오류가 리턴됩니다. 예를 들어, 다음과 같습니다.
The Defect SAMPL00000123 does not have a field named "Invalid_field". 
잠재적 예외로 인한 장애를 처리할 코드도 작성해야 합니다. eval{}명령문 내에서 API 메소드를 실행하여 예외를 처리하십시오. 예를 들어, 다음과 같습니다.
# trap exceptions and error message strings
# ... 
eval { $RetVal = ${$CQEntity}->Validate(); };
# EXCEPTION information is in $@
# RetVal is either an empty string or contains a failure message string
if ($@){
        print "Exception: '$@’\n"; 
        	# other exception handling goes here...
        } 
if ($RetVal eq ""){
        # success... 
        } 
else {
        	  # failure...
        	  # return the message string  here...
        }
< 이전 | 다음 >

피드백