Ruby Basic - 9
8260 ワード
Exception
begin rescue
begin
1 / 0 # zero division error
rescue
puts 'Exception raised, but handled'
end
方法で救援を使用する場合はbeginを省略できます.defがbeginの役を演じているからです.def divide(x, y)
x / y
rescue
puts "Exceptino raised, but handled"
end
特定の例外の処理
Exceptionクラスのサブクラスとして受信します.
begin
...
rescue ZeroDivisionError
...
rescue TypeError
...
rescue
...
end
exception methods
=>を使用してeオブジェクトを使用する方法.
begin
...
rescue ZeroDivisionError => e
puts e.class
rescue TypeError => e
puts e.class
rescue => e
puts e.class
end
ExceptionメソッドのタイプException#class
Exception#message
Exception#backtrace
Exception#full_message
raise exception
ruby異常タイプ
dev even_numbers(array)
unless array.is_a?(Array)
raise ArgumentError
end
if array.length == 0
raise StandardError.new("Too few elements")
end
array.find_all { |el| el.to_i % 2 == 0 }
end
custom exceptionクラスを作成するとStandardErrorが継承されます.正式なドキュメントでは、標準エラーが常にdefaultに設定されているためです.class TooLoudError < StandardError
attr_reader :volume
def initialize(value, msg=nil)
# Let parent class set message
super(msg || "Too loud!")
@volume = value
end
end
class Radio
def volume=(value)
if value < 1 || value > 10
raise TooLoudError.new(value)
end
@volume = value
end
end
begin
r = Radio.new
r.volume = 20
rescue TooLoudError => e
puts "Volume #{e.volume}: #{e.message}"
end
Reference
この問題について(Ruby Basic - 9), 我々は、より多くの情報をここで見つけました https://velog.io/@wpark/Ruby-Basic-9テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol