0

rescueRuby / Railsには、より具体的な可能性を可能にする「キャッチオール」ステートメントがありますrescueか?私は試した

begin
  # something
rescue URI::InvalidURIError
  # do something
rescue SocketError
  # do something else
rescue 
  # do yet another thing
end

URI::InvalidURIErrorまたはがある場合でもSocketError、最後になりますrescue(つまり、実行されます) 。それぞれ、、またはdo yet another thingにしたいと思います。do somethingdo something else

4

1 に答える 1

0
require 'uri'
require 'socket'

Errors = [URI::InvalidURIError, SocketError]
a = lambda { |e=nil|
             begin
               raise e unless e.nil? 
             rescue URI::InvalidURIError
               puts "alligator"
             rescue SocketError
               puts "crocodile"
             rescue
               puts "vulture"
             else
               puts "rhino"
             end }

今すぐお試しください

a.( Errors[ 0 ] )
a.( Errors[ 1 ] )
a.call

必要に応じて動作します。上記のコードが機能しない場合は、プログラムで思った以外のことが起こっています。

于 2012-11-24T21:58:12.443 に答える