คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ
Apigee X info
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 อาจทำให้เกิดข้อผิดพลาด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 และชื่อตัวแปรที่ไม่ได้กำหนดจากองค์ประกอบ faultstring ของการตอบกลับข้อผิดพลาด ตัวอย่างเช่น ใน faultstring ต่อไปนี้ ชื่อ PythonScript คือ
myscript.pyและชื่อตัวแปรที่ไม่ได้กำหนดคือ num3"faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
ตรวจสอบไฟล์ต้นฉบับ PythonScript ที่ระบุในขั้นตอนที่ 1 ด้านบน และยืนยันว่ามีการอ้างอิงตัวแปรที่ไม่ได้กำหนดซึ่งระบุในขั้นตอนที่ 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
ข้อผิดพลาดนี้จะเกิดขึ้นเมื่ออาร์กิวเมนต์ที่ 2 ของการหารหรือการดำเนินการแบบโมดูโลเป็น 0
เนื้อหาการตอบกลับข้อผิดพลาด
{ "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 ของการตอบกลับข้อผิดพลาด เช่น ใน 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""
ตรวจสอบไฟล์ต้นฉบับ PythonScript ที่ระบุในขั้นตอนที่ 1 ด้านบน และยืนยันว่ามีการหารหรือการดำเนินการโมดูลัสด้วย 0 หรือไม่ ตัวอย่างเช่น โค้ด PythonScript ต่อไปนี้จะดำเนินการหารด้วย 0 ซึ่งตรงกับสิ่งที่อยู่ใน faultstring
a = 0 b = 5 c = b/a print c
ในสคริปต์ตัวอย่างที่แสดงด้านบน เนื่องจากอาร์กิวเมนต์ที่ 2 ของการดำเนินการหารเป็น 0 คุณจึงได้รับข้อผิดพลาดต่อไปนี้
"faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero""
ความละเอียด
ตรวจสอบว่าอาร์กิวเมนต์ที่ 2 ของการหารหรือการดำเนินการโมดูโลไม่ใช่ 0 ใน PythonScript
หากต้องการแก้ไขปัญหาเกี่ยวกับตัวอย่าง PythonScript ที่แสดงด้านบน ให้ใช้ค่าที่ไม่ใช่ 0 เป็นอาร์กิวเมนต์ที่ 2 ของการหารหรือการดำเนินการแบบโมดูโล เช่น
a = 3 b = 5 c = b/a print c
ข้อมูลเพิ่มเติม
ข้อผิดพลาด steps.script.ScriptEvaluationFailed อาจเกิดจากสาเหตุอื่นๆ อีกมากมายนอกเหนือจากที่อธิบายไว้ข้างต้น โปรดดูข้อมูลเพิ่มเติมในเอกสารประกอบอย่างเป็นทางการของ Python