< 上一课 | 下一课 >

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 ... 
     } 

某些预期通常失败的函数不包含在此范围内。尤其是验证和设置字段函数返回错误说明,而不是抛出异常。 要了解更多信息,请参阅“错误检查和验证”。

错误检查

对于 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... 
        }
< 上一课 | 下一课 >

反馈