Ruby 例外処理の簡単な使い方

Rubyで、例外処理の簡単な使い方を記述してます。rubyのバージョンは2.7.2を使用してます。
環境
- OS windows10 pro 64bit
- ruby 2.7.2p137
例外処理
rubyは、begin ~ end のブロックで例外を処理することが可能です。
begin
# 処理
rescue
# エラーが発生した場合の処理
ensure
# 必ず行われる処理
end
以下は、正常な処理と、0で割り算してエラーを発生させるサンプルとなります。例外が発生するとrescueに記述されて処理が実行されることが確認できます。
def hoge(x, y)
begin
p "開始"
p x / y
rescue
p "エラー発生"
ensure
p "必ず実行"
end
end
hoge(6, 3)
# "開始"
# 2
# "必ず実行"
hoge(1, 0)
# "開始"
# 2
# "必ず実行"
エラー確認
「rescue => e」でエラーの種類を確認することが可能です。
def hoge(x, y)
begin
p "開始"
p x / y
rescue => e
p e
ensure
p "必ず実行"
end
end
hoge(1, 0)
# "開始"
# #<ZeroDivisionError: divided by 0>
# "必ず実行"
eオブジェクトはメソッドも持っています。
def hoge(x, y)
begin
p "開始"
p x / y
rescue => e
p e.class
p e.message
p e.backtrace
ensure
p "必ず実行"
end
end
hoge(1, 0)
# "開始"
# ZeroDivisionError
# "divided by 0"
# ["sample.rb:4:in `/'", "sample.rb:4:in `hoge'", "sample.rb:14:in `<main>'"]
# "必ず実行"
発生する例外ごとに、処理を分けることも可能です。
def hoge(x, y)
begin
p "開始"
p x / y
rescue ZeroDivisionError
p "0で割り算を行ってます"
rescue ArgumentError
p "引数が間違っています"
ensure
p "必ず実行"
end
end
hoge(1, 0)
# "開始"
# "0で割り算を行ってます"
# "必ず実行"
エラーの種類も、もちろん確認できます。
def hoge(x, y)
begin
p "開始"
p x / y
rescue ZeroDivisionError => e
p e
rescue ArgumentError => e
p e
ensure
p "必ず実行"
end
end
hoge(1, 0)
# "開始"
# #<ZeroDivisionError: divided by 0>
# "必ず実行"
例外を発生させる
raiseを使用すると任意の例外を発生されることが可能です。
def hoge(x, y)
begin
p "開始"
raise ArgumentError
rescue ZeroDivisionError
p "0で割り算を行ってます"
rescue ArgumentError
p "引数が間違っています"
ensure
p "必ず実行"
end
end
hoge(1, 0)
# "開始"
# "引数が間違っています"
# "必ず実行"
独自のメッセージを作成することも可能です。
def hoge(x, y)
begin
p "開始"
raise ArgumentError,"ArgumentErrorを発生させます"
rescue ZeroDivisionError
p "0で割り算を行ってます"
rescue ArgumentError => e
p e.message
ensure
p "必ず実行"
end
end
hoge(1, 0)
# "開始"
# "ArgumentErrorを発生させます"
# "必ず実行"
何も指定しなければ「RuntimeError」を発生させます。
def hoge(x, y)
begin
p "開始"
raise
rescue ZeroDivisionError
p "0で割り算を行ってます"
rescue ArgumentError
p "引数が間違っています"
rescue RuntimeError
p "ランタイムエラーです"
ensure
p "必ず実行"
end
end
hoge(1, 0)
# "開始"
# RuntimeError
# "必ず実行"
-
前の記事
php addslashesで文字列をスラッシュでエスケープする 2021.09.29
-
次の記事
yarnでインストールしたものをアンイストールする 2021.09.29
コメントを書く