Lorsque les routines de l'API Rational ClearQuest détectent des conditions imprévues, elles émettent une exception. Si l'exception n'est pas interceptée par le programme appelant, l'interpréteur de langage met fin au programme. S'il y a des risques que l'appel de l'API Rational ClearQuest échoue, vous devez intercepter et traiter les exceptions.
On Error Resume Next Err.Clear ' perform some operation here... if Err.Number <> 0 then ' An exception occurred StdOut "Exception:" & vbCrLf &_ " Error number: " & Err.Number & vbCrLf &_ " Error description: '" & Err.Description & vbCrLf ...Vous pouvez utiliser une instruction GoTo pour Visual Basic, mais pas pour VBScript. Exemple :
' VB exception handling example On Error GoTo HandleError fieldValue = record.GetFieldStringValue(fieldname) ... HandleError: StdOut "Got error number " & Err.Number & ":" StdOut Err.Description
Plusieurs fonctions dont les risques d'échec sont élevés font exception à cette règle. Notamment, les fonctions de contrôle de validité (validate) et de définition (set) de zone renvoient des indications d'erreur au lieu d'émettre des exceptions. Pour plus d'informations, voir "Contrôle des erreurs et contrôle de validité.
Pour VBScript, certaines propriétés et méthodes renvoient une valeur VARIANT qui devrait contenir un tableau d'objets ou de chaînes (Strings). Si le tableau est vide, la valeur de VARIANT est EMPTY. Une valeur vide n'est pas considérée comme étant un tableau, or une tentative d'itération sur un élément qui n'est pas un tableau est considérée comme une inadéquation de type. Vous devez vérifier les valeurs de retour VARIANT à l'aide des fonctions IsEmpty ou IsArray avant d'appliquer une fonction liée au tableau. Exemple :
fieldObjs = GetInvalidFieldValues ' Vérifier la valeur de retour If (IsArray(fieldObjs)) Then For Each fieldInfo In fieldObjs fieldValue = field.GetValue fieldName = field.GetName currentsession.outputdebugstring "This is the fieldvalue " & fieldvalue Next Else currentsession.outputdebugstring "This is not an array or it is empty" End If