查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
ScriptEvaluationFailed
錯誤代碼
steps.script.ScriptEvaluationFailed
錯誤回應主體
{ "fault": { "faultstring": "Evaluation of script pythonscript_name (py) failed with reason: error_type: error_description"", "detail": { "errorcode": "steps.script.ScriptEvaluationFailed" } } }
可能原因
Python Script 政策可以
擲回幾種不同類型的 ScriptEvaluationFailed
錯誤。以下各節說明其中一些錯誤。
NameError
如果 PythonScript 程式碼中有變數,但未定義就參照或操作,您會收到名稱錯誤。
錯誤回應主體
{ "fault": { "faultstring": "Evaluation of script pythonscript_name (py) failed with reason: "NameError: variable_name is not defined"", "detail": { "errorcode": "steps.script.ScriptEvaluationFailed" } } }
錯誤回應主體範例
{ "fault": { "faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined"", "detail": { "errorcode": "steps.script.ScriptEvaluationFailed" } } }
診斷
從錯誤回應的錯誤字串元素中找出 PythonScript 政策和未定義的變數名稱。例如,在下列錯誤字串中,PythonScript 名稱為
myscript.py
,未定義的變數名稱為 num3:"faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
檢查在上述步驟 1 中找到的 PythonScript 來源檔案,並確認系統是否參照了上述步驟 1 中指定的未定義變數。舉例來說,下列 PythonScript 程式碼參照了未定義的變數 num3,且該變數與 faultstring 相符:
num1 = 1.5 num2 = 6.3 sum = float(num1) + float(num3) print('The sum of {0} and {1} is {2}'.format(num1, num3 sum))
檢查 PythonScript 程式碼中是否已定義特定變數。如果未定義這個變數,就會造成錯誤。
在上方範例指令碼中,變數 num3 未定義。因此,您會收到以下錯誤訊息:
"faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
解析度
確保 PythonScript 程式碼中參照的所有變數都已正確定義。
如要修正上述 PythonScript 範例的問題,請在使用前定義 num3 變數。例如:
num1 = 1.5 num2 = 6.3 num3 = 8.7 sum = float(num1) + float(num3) print('The sum of {0} and {1} is {2}'.format(num1, num3, sum))
ZeroDivisionError
當除法或模數運算的第二個引數為零時,就會引發這個錯誤。
錯誤回應主體
{ "fault": { "faultstring": "Evaluation of script pythonscript_name (py) failed with reason: "ZeroDivisionError: reason_for_error"", "detail": { "errorcode": "steps.script.ScriptEvaluationFailed" } } }
錯誤回應主體範例
{ "fault": { "faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero"", "detail": { "errorcode": "steps.script.ScriptEvaluationFailed" } } }
診斷
找出 PythonScript 政策名稱,以及錯誤回應 faultstring 元素失敗的原因。舉例來說,在下列錯誤字串中,PythonScript 名稱為
myscript.py
,失敗原因為integer division or modulo by zero
:"faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero""
檢查在上方步驟 1 找到的 PythonScript 來源檔案,並確認是否會有除法或模數運算零。舉例來說,下列 PythonScript 程式碼會執行除以零的運算,這與錯誤字串中的內容相符:
a = 0 b = 5 c = b/a print c
在上方顯示的指令碼範例中,由於除法運算的第二個引數為零,因此會出現以下錯誤:
"faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero""
解析度
確保 PythonScript 中除除法或模數運算的第二個引數為零。
如要修正上述 PythonScript 範例的問題,請使用非零值做為除法或模數運算的第二個引數。例如:
a = 3 b = 5 c = b/a print c
更多資訊
除了上述錯誤以外,還有許多其他可能原因。steps.script.ScriptEvaluationFailed
詳情請參閱官方的 Python 說明文件。