روبي AT_EXIT حالة الخروج
سؤال
هل يمكنني تحديد حالة الخروج من الأنفس في كتلة AT_EXIT؟
at_exit do
if this_process_status.success?
print 'Success'
else
print 'Failure'
end
end
المحلول 2
باستخدام فكرة من تلممان
at_exit do
if $!.nil? || $!.is_a?(SystemExit) && $!.success?
print 'success'
else
code = $!.is_a?(SystemExit) ? $!.status : 1
print "failure with code #{code}"
end
end
نصائح أخرى
على الرغم من أن الوثائق حول هذا هو رقيقة حقا، $! يتم تعيين أن تكون الاستثناء الأخير الذي يحدث، وبعد مكالمة مخرج () هذا استثناء SystemExit. وضع هذين معا تحصل على هذا:
at_exit do
if ($!.success?)
print 'Success'
else
print 'Failure'
end
end
لا تنتمي إلى StackOverflow