मैंने begin rescue end ब्लॉक में कुछ कोड संलग्न किए:

begin
  ...
rescue StandardError => e
  puts("Exception #{e} occurred")
  puts("Copying script to error folder.")
  FileUtils.cp("Demo.rb", "C:/Ruby/Failure")
end

मुझे यकीन नहीं है कि अगर किसी अपवाद को फेंक नहीं दिया जाता है तो मैं कोड के एक बिट को कैसे निष्पादित कर सकता हूं, इसलिए मैं अपनी स्क्रिप्ट को सफलता फ़ोल्डर में कॉपी कर सकता हूं। किसी भी सहायता की सराहना की जाएगी।

1
jackfrost5234 2 पद 2015, 18:17

2 जवाब

सबसे बढ़िया उत्तर

आप अपवादों के बारे में गलत तरीके से सोच रहे हैं।

अपवादों के पूरे बिंदु यह है कि आपके कोड का मुख्य निकाय आगे बढ़ता है, हालांकि कोई अपवाद नहीं फेंका गया था। आपके begin ब्लॉक के अंदर कोड के सभी पहले से ही निष्पादित हो रहे हैं, हालांकि कोई अपवाद नहीं फेंका गया था। एक अपवाद कोड के सामान्य प्रवाह को बाधित कर सकता है, और बाद के चरणों को निष्पादित करने से रोक सकता है।

आपको begin ब्लॉक के अंदर अपनी फाइल कॉपी सामान रखना चाहिए:

begin
  #code...
  # This will run if the above "code..." throws no exceptions
  FileUtils.cp("Demo.rb", "C:/Ruby/Success")
rescue StandardError => e
  puts("Exception #{e} occurred")
  puts("Copying script to error folder.")
  FileUtils.cp("Demo.rb", "C:/Ruby/Failure")
end
2
meagar 2 पद 2015, 15:34

आप else कोड का उपयोग केवल तभी कर सकते हैं जब कोई अपवाद न हो:

begin
  # code that might fail
rescue
  # code to run if there was an exception
else
  # code to run if there wasn't an exception
ensure
  # code to run with or without exception
end
4
spickermann 2 पद 2015, 15:30