أنت الآن بصدد الاطّلاع على مستندات 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 تتم الإشارة إليه أو تنفيذه بدون تحديد، سيظهر لك الخطأ Name.
نص رد الخطأ
{ "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
يحدث هذا الخطأ عندما تكون الوسيطة الثانية لعملية القسمة أو القسمة النمطية صفرًا.
نص رد الخطأ
{ "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 أعلاه وتأكَّد مما إذا كانت هناك عملية قسمة أو عملية حسابية نموذجية على صفر. على سبيل المثال، ينفّذ رمز PythonScript التالي عملية القسمة على صفر، وهو ما يتطابق مع ما هو وارد في السلسلة faultstring:
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 الرسمية لمزيد من المعلومات.