Microsoft KB Archive/174222
Article ID: 174222
Article Last Modified on 9/30/2003
- Microsoft Commerce Server 2.0
This article was previously published under Q174222
When a custom scriptor component written in VBScript is executed, the following error may occur based on whether or not error handling code is in place in the component.
Commerce.OrderPipeline error '80020009' ::OrderExecute() failed for component[0x..] hr: 0x8000ffff PROGID: Commerce.Scriptor.1 Cannot Execute Script SetScriptSite Catastrophic failure <file name>, <line number>
The first time a scripting error is encountered, the pipeline returns the error and a description of the scripting error. For example, if you attempt to divide an integer by zero in your component, you receive the following error message the first time pipeline is run:
Commerce.OrderPipeline error '80020009' ::OrderExecute() failed for component[0x..] hr: 0x80004005 PROGID: Commerce.Scriptor.1 Cannot Execute Script Execute invocation failed Unspecified error Division by zero <file name>, <line number>
After the scriptor component encounters the divide by zero error, subsequent executions of the order processing pipeline fail with the "catastrophic failure" error message.
The problem occurs because no error handling code is written in the custom component.
To work around this problem, always specify "On Error Resume Next" in the component's VBScript code.
The following information about "On Error Resume Next" is included in the online VBScript reference in Visual Studio:
Syntax On Error Resume Next Remarks If you don't use an On Error Resume Next statement, any run-time error that occurs is fatal; that is, an error message is displayed and execution stops. On Error Resume Next causes execution to continue with the statement immediately following the statement that caused the run-time error, or with the statement immediately following the most recent call out of the procedure containing the On Error Resume Next statement. This allows execution to continue despite a run-time error. You can then build the error-handling routine inline within the procedure. An On Error Resume Next statement becomes inactive when another procedure is called, so you should execute an On Error Resume Next statement in each called routine if you want inline error handling within that routine.
Additional query words: merchant prodcommerce
Keywords: kbprogramming kbprb KB174222