次のコードがあります。
require 'open-uri'
class CustomException < StandardError;end
def file
f = Kernel.open('http://i.dbastatic.dk/images/2/68/500656768_20012012182407_0401_2.jpg')
return f
rescue => e
raise CustomException.new(e.message)
end
今、私が次のことをすると:
begin
file.body
rescue CustomException
puts "rescued it!"
end
私は得る:
NoMethodError: nil:NilClass の未定義のメソッド「body」
開いている uri からの 404 エラー メッセージを含む CustomException の代わりに。奇妙なことに、代わりに次のようにすると:
begin
f = file
f.body
rescue CustomException
puts "rescued it!"
end
その後、.body を実行しようとする前に、キャッチできる CustomException を取得します。わからない どうして?そして、ファイルメソッドを期待どおりに変更するにはどうすればよいですか?