Godot: نوع من المحاولة أخيرًا (أو باستثناء) حظر لـ gdscript

تم إنشاؤها على ٣٠ يناير ٢٠١٦  ·  13تعليقات  ·  مصدر: godotengine/godot

في Python يسمى try إلا في Java حاول catch أخيرًا. قم بتشغيل الكود داخل كتلة try إذا فشلت ، قم بتشغيل الكتلة النهائية بدلاً من ذلك. هذا يمكن أن يبسط إلى حد كبير الترميز في البرنامج النصي gd عن طريق إزالة جميع الأعطال. لن تقلق بعد الآن بشأن التعليمات البرمجية السيئة. في بعض الأحيان ، قد ترغب في الحصول على كود واحد يعمل على جزء ديناميكي من البيانات وليس عليك إنشاء المزيد من الأمان في حالة عدم وجود بيانات.

ستظهر دائمًا جميع الأخطاء من كتلة المحاولة الفاشلة في نافذة التصحيح على أي حال (الالتقاط التلقائي) لذلك حتى إذا لم يكن لديك ما يدعو للقلق ، فلا يزال بإمكانك رؤية شفرتك سيئة.

محاولة
... رمز هنا
أخيرا
... رمز هنا

archived feature proposal gdscript

التعليق الأكثر فائدة

@ salvob41 في هذه الحالة يمكنك استخدام هذا:

if is_instance_valid(object):
    #Do what you want if the node exists

Kotzuo ، هذا لا يعمل دائمًا ، لأنه ليس process خطيرة

أنت محق تمامًا 100٪ ...... إنه نمط خطير

في حالة عمل كود الشبكة ، فهو بنطلون بني! يمكن أن ينفصل الشيء أحيانًا بين الحصول على رموز حالة الاتصال!

إنه أمر مرهق بعض الشيء في GDScript هذا الدفاع من الأشخاص الآخرين الذين ليس لديهم (أو لا يعتقدون أن لديهم) هذه المشكلة .... ويقترح عليهم ، ربما أشخاص آخرين يرمزون بأنماط مختلفة. ربما تقوم بترميز "صحيح" وطريقتي "خاطئة" .... لا أعرف ، لكنني نجحت في الترميز بهذه الطريقة لعدة سنوات والآن لن يجبرهم الحصول على هذه الميزة على استخدامها ، ولكن عدم امتلاكها يجبرني على البرمجة مثلهم.

إذا حصلنا على بيان المحاولة والتقاط ، فلا أحد يجب أن يستخدمه .... الناس مثلي وهذا الرجل يريده كميزة لنا لكي نبرمج بالطريقة التي نحبها

ال 13 كومينتر

حسنًا ، بالنسبة لي أفضل الأعطال في برنامجي على السلوكيات الغريبة بسبب التعليمات البرمجية السيئة. من فضلك ، لا تأخذها
خطأ ، أحب الاستثناءات ، عندما تتم بشكل صحيح.

أعتقد أن هذا يجب تركه للإصدار 2.1 للنص المكتوب الجديد بشكل ثابت (ممزوج بالميزات "الديناميكية" ربما؟).

الاستثناءات لن تحدث. تم تصميم Godot لكي تستمر الأشياء في العمل بشكل متساوٍ
إذا كانت الحالة غير متسقة ، أثناء الإبلاغ عن الأخطاء في نفس الوقت

يوم السبت ، 30 كانون الثاني (يناير) 2016 ، الساعة 8:18 صباحًا ، RebelliousX [email protected]
كتب:

حسنًا ، بالنسبة لي أفضل الأعطال في برنامجي على السلوكيات الغريبة بسبب السيئة
الشفرة. من فضلك ، لا تأخذها
خطأ ، أحب الاستثناءات ، عندما تتم بشكل صحيح.

أعتقد أنه يجب ترك هذا الإصدار 2.1 للإصدار الجديد بشكل ثابت (مختلط مع
ربما الميزات "الديناميكية"؟) نص مكتوب.

-
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/3516#issuecomment -177151923.

هي فكرة فكر في الأمر. لنفترض على سبيل المثال أن لديك مجموعة من الصور في مجلد تريد فتحها جميعًا كمجموعة مربعات ولكن قل أنه لا توجد صور يجب ألا يحدث شيء. بينما قد يبدو أنه يمكنك ببساطة التحقق من وجود قيمة خالية في المجلد ، فإن التعليمات البرمجية الخاصة بك هي في الواقع أبسط في محاولة القيام بذلك إذا لم يكن ذلك رائعًا. المفهوم الكامل لرمز البطة هو رمز بطة أكثر.

بالإضافة إلى أنه حتى بيثون حاول ما عدا فعل نفس الشيء الذي أقترحه لذلك لم يسمع به أحد

نعم ، تم تقييم هذا الأمر والنظر فيه لفترة طويلة ، مع ملاحظة الإيجابيات مقابل السلبيات.
لن يتم إضافة الاستثناءات

يوم السبت ، 30 كانون الثاني (يناير) 2016 ، الساعة 8:45 صباحًا ، trollworkout [email protected]
كتب:

هي فكرة فكر في الأمر. لنفترض على سبيل المثال أن لديك مجموعة من الصور بتنسيق
المجلد الذي تريد فتحها جميعًا كمجموعة تجانب ولكن قل لا توجد صور
لا شيء يجب أن يحدث. بينما قد يبدو أنه يمكنك ببساطة التحقق من وجود قيمة خالية
في المجلد الخاص بك هو في الواقع أبسط في محاولة كتلة حاول القيام بذلك إذا
ليس هذا رائع. المفهوم الكامل لرمز البطة هو رمز بطة أكثر.

بالإضافة إلى أنه حتى بيثون حاول إلا أن يفعل نفس الشيء الذي أقترحه
لم يسمع به من قبل

-
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub
https://github.com/godotengine/godot/issues/3516#issuecomment -177155429.

لا مشكلة :)

ألم يحدث لك أن تتحقق مما إذا كانت وظيفة عملية العقدة ما إذا كان مثيل العقدة صالحًا ثم فشلت لأن "الفهرس غير صالح لمثيل تم تحريره سابقًا"؟

نظرًا لأن الخطأ ليس حتميًا ويمكن أن يؤدي إلى تعطل اللعبة على الفور (وهذا أمر مزعج ، خاصة لأنه في لعبة مُصدرة لا يتم الإبلاغ عنها على الإطلاق). محاولة ، الصيد من شأنه أن يحل الخطأ بطريقة نظيفة للغاية وبسيطة.

هل هذا لا يزال FIRM لا؟

@ salvob41 في هذه الحالة يمكنك استخدام هذا:

if is_instance_valid(object):
    #Do what you want if the node exists

@ salvob41 في هذه الحالة يمكنك استخدام هذا:

if is_instance_valid(object):
    #Do what you want if the node exists

Kotzuo ، هذا لا يعمل دائمًا ، لأنه ليس process خطيرة

@ salvob41 في هذه الحالة يمكنك استخدام هذا:

if is_instance_valid(object):
    #Do what you want if the node exists

Kotzuo ، هذا لا يعمل دائمًا ، لأنه ليس process خطيرة

أنت محق تمامًا 100٪ ...... إنه نمط خطير

في حالة عمل كود الشبكة ، فهو بنطلون بني! يمكن أن ينفصل الشيء أحيانًا بين الحصول على رموز حالة الاتصال!

إنه أمر مرهق بعض الشيء في GDScript هذا الدفاع من الأشخاص الآخرين الذين ليس لديهم (أو لا يعتقدون أن لديهم) هذه المشكلة .... ويقترح عليهم ، ربما أشخاص آخرين يرمزون بأنماط مختلفة. ربما تقوم بترميز "صحيح" وطريقتي "خاطئة" .... لا أعرف ، لكنني نجحت في الترميز بهذه الطريقة لعدة سنوات والآن لن يجبرهم الحصول على هذه الميزة على استخدامها ، ولكن عدم امتلاكها يجبرني على البرمجة مثلهم.

إذا حصلنا على بيان المحاولة والتقاط ، فلا أحد يجب أن يستخدمه .... الناس مثلي وهذا الرجل يريده كميزة لنا لكي نبرمج بالطريقة التي نحبها

إنه قرار صعب. ولكن نظرًا لأن godot لا يتعامل مع الأخطاء جيدًا ، فيمكننا محاولة التفاف كل عودة فارغة / خطأ إلى لغة أخرى تدعم معالجة الخطأ بالطريقة التي نريدها.
Swift بديل جيد :

يشبه التعامل مع الأخطاء في Swift معالجة الاستثناءات بلغات أخرى ، باستخدام الكلمات الأساسية للتجربة والتقاط والرمي. على عكس معالجة الاستثناءات في العديد من اللغات - بما في ذلك Objective-C - لا تتضمن معالجة الأخطاء في Swift فك مجموعة الاستدعاءات ، وهي عملية يمكن أن تكون باهظة الثمن من الناحية الحسابية. على هذا النحو ، فإن خصائص أداء بيان الرمي قابلة للمقارنة مع تلك الخاصة ببيان الإرجاع.

لا ينبغي أن تكون هناك مشكلة إذا كانت هناك طريقة لاستخدام Swift. أنا مبتدئ في godot ، وسمعت أن هناك طريقة لربط لغات أخرى ديناميكيًا ...
أوه ، خبر جيد آخر. في عام 2020 ، ستضيف سويفت دعمًا رسميًا لنظام التشغيل Windows.
أنا مستجد تمامًا في هذا الموضوع ولكن قد تكون هناك طريقة لنا للحصول على معالجة الأخطاء بدون 1000 عبارة if وتدفق منطقي اختياري.

نعم ، تم تقييم هذا الأمر والنظر فيه لفترة طويلة ، مع ملاحظة الإيجابيات مقابل السلبيات.
لن يتم إضافة الاستثناءات

يوم السبت ، 30 كانون الثاني (يناير) 2016 ، الساعة 8:45 صباحًا ، trollworkout [email protected]
كتب:

هي فكرة فكر في الأمر. لنفترض على سبيل المثال أن لديك مجموعة من الصور بتنسيق
المجلد الذي تريد فتحها جميعًا كمجموعة تجانب ولكن قل لا توجد صور
لا شيء يجب أن يحدث. بينما قد يبدو أنه يمكنك ببساطة التحقق من وجود قيمة خالية
في المجلد الخاص بك هو في الواقع أبسط في محاولة كتلة حاول القيام بذلك إذا
ليس هذا رائع. المفهوم الكامل لرمز البطة هو رمز بطة أكثر.
بالإضافة إلى أنه حتى بيثون حاول إلا أن يفعل نفس الشيء الذي أقترحه
لم يسمع به من قبل
-
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub
# 3516 (تعليق) .

حسنًا ، لقد مرت 4 سنوات منذ أن بدأ (وانتهى) هذا الموضوع ، ولا يزال هناك أشخاص يواجهون هذه المشكلة (أنا ، على سبيل المثال). لقد حاولت! = فارغة، weakrefs، is_instance_valid، فإنه لا فائدة، لأن الدولة العقدة المشار إليها تتغير ببساطة بين الاختيار صحة ودعوته لطريقة مرجعية ل. حاول .. catch ( ما عدا ، أيًا كان ) من شأنه أن يحل هذه المشكلة في ثوانٍ.

reduz يرجى إعادة فتح هذا.
أريد التعامل مع json بحيث لا يتسبب في تعطل المحرر عند تعيين نوع غير صالح.
إن Godot ليس شيئًا أعتبره مستقرًا ، إنه يتعطل علي يوميًا بسبب عدم كتابة gdscript بشكل ثابت

@ Shadowblitz16 لقد تمت مناقشة هذا بالفعل باستفاضة ، ومن الواضح الآن أنه لن تتم إضافة استثناءات إلى GDScript. إذا كنت تريد استخدام الاستثناءات ، فاستخدم لغة أخرى تدعمها مثل C #.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات