الفرق بين المراجعتين لصفحة: «Ruby/Thread/report on exception»
لا ملخص تعديل |
لا ملخص تعديل |
||
سطر 8: | سطر 8: | ||
يُستخدم هذا التابع لإمساك الأخطاء في [[Ruby/Thread|المهمة الفرعية]] في وقت مبكر. لكن في بعض الحالات، قد لا ترغب في هذه المخرجات. هناك عدة طرق لتجنب المخرجات الزائدة: | يُستخدم هذا التابع لإمساك الأخطاء في [[Ruby/Thread|المهمة الفرعية]] في وقت مبكر. لكن في بعض الحالات، قد لا ترغب في هذه المخرجات. هناك عدة طرق لتجنب المخرجات الزائدة: | ||
* إذا لم يكن الاستثناء مقصودا، فأفضل خيار أمامك هو إصلاح سبب الاستثناء بحيث لا يُطلق بعدها. | *إذا لم يكن الاستثناء مقصودا، فأفضل خيار أمامك هو إصلاح سبب الاستثناء بحيث لا يُطلق بعدها. | ||
* إذا لم يكن الاستثناء مقصودًا، فقد يكون من الأفضل معالجته بالقرب من الموضع الذي أطلق منه بدلاً من تركه ينهي [[Ruby/Thread|المهمة الفرعية]]. | *إذا لم يكن الاستثناء مقصودًا، فقد يكون من الأفضل معالجته بالقرب من الموضع الذي أطلق منه بدلاً من تركه ينهي [[Ruby/Thread|المهمة الفرعية]]. | ||
* في حال كان مُؤمّنا (guaranteed)، سيتم ضم (join) [[Ruby/Thread|المهمة الفرعية]] عبر <code>[[Ruby/Thread/join|join]]</code> أو <code>[[Ruby/Thread/value|value]]</code>، بعد ذلك سيكون من الآمن تعطيل هذا التقرير عبر التعبير <code>Thread.current.report_on_exception = false</code> عند بدء تشغيل [[Ruby/Thread|المهمة الفرعية]]. لكن هذا قد يعالج الاستثناء في وقت متأخر، أو قد لا يٌعالج أبدا في حالة عدم ضم [[Ruby/Thread|المهمة الفرعية]] | *في حال كان مُؤمّنا (guaranteed)، سيتم ضم (join) [[Ruby/Thread|المهمة الفرعية]] عبر <code>[[Ruby/Thread/join|join]]</code> أو <code>[[Ruby/Thread/value|value]]</code>، بعد ذلك سيكون من الآمن تعطيل هذا التقرير عبر التعبير <code>Thread.current.report_on_exception = false</code> عند بدء تشغيل [[Ruby/Thread|المهمة الفرعية]]. لكن هذا قد يعالج الاستثناء في وقت متأخر، أو قد لا يٌعالج أبدا في حالة عدم ضم [[Ruby/Thread|المهمة الفرعية]] إن كانت [[Ruby/Thread|المهمة الفرعية]] الرئيسية (parent thread) معطلة. | ||
انظر أيضا صفحة <code>[[Ruby/Thread/ | انظر أيضا صفحة <code>[[Ruby/Thread/report on exception-3D|report_on_exception=]]</code>. | ||
يوجد أيضًا تابع نسخة (instance level method) لتعيين هذا الخيار ل[[Ruby/Thread|مهمة فرعية]] معينة، راجع صفحة <code>[[Ruby/Thread/report on exception-i|report_on_exception]]</code>. | يوجد أيضًا تابع نسخة (instance level method) لتعيين هذا الخيار ل[[Ruby/Thread|مهمة فرعية]] معينة، راجع صفحة <code>[[Ruby/Thread/report on exception-i|report_on_exception]]</code>. | ||
سطر 17: | سطر 17: | ||
<syntaxhighlight lang="ruby">report_on_exception→ true or false</syntaxhighlight> | <syntaxhighlight lang="ruby">report_on_exception→ true or false</syntaxhighlight> | ||
==القيمة المُعادة== | ==القيمة المُعادة== | ||
يعيد التابع <code>report_on_exception</code> قيمة منطقية تمثل حالة تقرير الاستثناء "report on exception". | يعيد التابع <code>report_on_exception</code> قيمة منطقية تمثل حالة تقرير الاستثناء "report on exception". | ||
==أمثلة== | ==أمثلة== | ||
مثال على استخدام التابع <code>report_on_exception</code>: | مثال على استخدام التابع <code>report_on_exception</code>:<syntaxhighlight lang="ruby">Thread.new { 1.times { raise } }</syntaxhighlight>سينتج هذا المثال المخرجات التالية في المجرى <code>$stderr</code>:<syntaxhighlight lang="ruby">#<Thread:...> terminated with exception (report_on_exception is true): | ||
<syntaxhighlight lang="ruby">Thread.new { 1.times { raise } }</syntaxhighlight>سينتج هذا المثال المخرجات التالية في المجرى <code>$stderr</code>:<syntaxhighlight lang="ruby">#<Thread:...> terminated with exception (report_on_exception is true): | |||
Traceback (most recent call last): | Traceback (most recent call last): | ||
2: from -e:1:in `block in <main>' | 2: from -e:1:in `block in <main>' | ||
1: from -e:1:in `times'</syntaxhighlight> | 1: from -e:1:in `times'</syntaxhighlight> | ||
==انظر أيضا== | ==انظر أيضا== | ||
* التابع <code>[[Ruby/Thread/ | *التابع <code>[[Ruby/Thread/report on exception-3D|report_on_exception=]]</code>: يُعيد التابع <code>report_on_exception=</code> الحالة الجديدة. | ||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/Thread.html#method-i-report_on_exception قسم التابع report_on_exception في الصنف Thread في توثيق روبي الرسمي.] | *[http://ruby-doc.org/core-2.5.1/Thread.html#method-i-report_on_exception قسم التابع report_on_exception في الصنف Thread في توثيق روبي الرسمي.] |
مراجعة 23:26، 5 نوفمبر 2018
يعيد التابع report_on_exception
حالة تقرير الاستثناء "report on exception". القيمة الافتراضية هي true
منذ روبي 2.5.
كل المهام الفرعية التي يتم إنشاؤها عندما تكون قيمة هذه الراية مساوية للقيمة true
ستبعث رسالة على المجرى stderr$
إذا أنهى استثناء ما المهمة الفرعية.
يُستخدم هذا التابع لإمساك الأخطاء في المهمة الفرعية في وقت مبكر. لكن في بعض الحالات، قد لا ترغب في هذه المخرجات. هناك عدة طرق لتجنب المخرجات الزائدة:
- إذا لم يكن الاستثناء مقصودا، فأفضل خيار أمامك هو إصلاح سبب الاستثناء بحيث لا يُطلق بعدها.
- إذا لم يكن الاستثناء مقصودًا، فقد يكون من الأفضل معالجته بالقرب من الموضع الذي أطلق منه بدلاً من تركه ينهي المهمة الفرعية.
- في حال كان مُؤمّنا (guaranteed)، سيتم ضم (join) المهمة الفرعية عبر
join
أوvalue
، بعد ذلك سيكون من الآمن تعطيل هذا التقرير عبر التعبيرThread.current.report_on_exception = false
عند بدء تشغيل المهمة الفرعية. لكن هذا قد يعالج الاستثناء في وقت متأخر، أو قد لا يٌعالج أبدا في حالة عدم ضم المهمة الفرعية إن كانت المهمة الفرعية الرئيسية (parent thread) معطلة.
انظر أيضا صفحة report_on_exception=
.
يوجد أيضًا تابع نسخة (instance level method) لتعيين هذا الخيار لمهمة فرعية معينة، راجع صفحة report_on_exception
.
البنية العامة
report_on_exception→ true or false
القيمة المُعادة
يعيد التابع report_on_exception
قيمة منطقية تمثل حالة تقرير الاستثناء "report on exception".
أمثلة
مثال على استخدام التابع report_on_exception
:
Thread.new { 1.times { raise } }
سينتج هذا المثال المخرجات التالية في المجرى $stderr
:
#<Thread:...> terminated with exception (report_on_exception is true):
Traceback (most recent call last):
2: from -e:1:in `block in <main>'
1: from -e:1:in `times'
انظر أيضا
- التابع
report_on_exception=
: يُعيد التابعreport_on_exception=
الحالة الجديدة.