Orchestrator 的 Mozilla Rhino JavaScript 引擎实现支持异常处理,从而处理错误。在脚本中编写异常处理程序时,必须使用以下准则。

  • 使用以下欧洲计算机制造商协会 (ECMA) 的错误类型。将 Error 用作插件函数返回的通用异常,以及以下特定错误类型。

    • TypeError

    • RangeError

    • EvalError

    • ReferenceError

    • URIError

    • SyntaxError

    以下示例显示了 URIError 的定义。

    try { 
         ... 
            throw new URIError("VirtualMachine with ID 'vm-0056' 
                           not found on 'vcenter-test-1'") ; 
         ... 
    } catch ( e if e instanceof URIError ) { 
    
    }
  • 脚本捕捉不到的所有异常一定是 <type>:SPACE<human readable message> 形式的简单字符串对象,如下所示。

    throw "ValidationError: The input parameter 'myParam' of type 'string' is too short."
    
  • 尽可能清晰地编写可供用户阅读的消息。

  • 简单字符串异常类型检查必须使用以下模式。

    try {
          throw "VMwareNoSpaceLeftOnDatastore: Datastore 'myDatastore' has no space left" ;
    } catch ( e if (typeof(e)=="string" && e.indexOf("VMwareNoSpaceLeftOnDatastore:") == 0) ) {
          System.log("No space left on device") ;
          // Do something useful here
    }
  • 简单字符串异常类型检查必须在工作流的脚本元素中使用以下模式。

    if (typeof(errorCode)=="string" 
          && errorCode.indexOf("VMwareNoSpaceLeftOnDatastore:") 
          == 0) {
          // Do something useful here
    }