LoginSignup
0
0

More than 1 year has passed since last update.

例外処理に強くなるにはこちらから。

Posted at

はじめに

開発する上で、避けたいけど避けられない。エラー。。
どんな優秀なエンジニアもエラーには何度も遭遇します。
例外処理を記述しておくことで、デバッグや想定外のエラーにも対応できたりとメリットがたくさんあります。
例外処理を書けるようにしておくと良いでしょう!

例外処理について

まず、「例外」とはなんらかの異常が発生したことを表すオブジェクトです。
例外が発生すると、例外はコールスタックまで遡り、トップレベルまで伝播して行きます。

メソッド②で例外発生

メソッド①呼び出し

トップレベル呼び出し

例外オブジェクトは、Exceptionまたはそのサブクラスのインスタンスです。

例外.jpeg

(出典: Ruby Exceptions

例外の制御

例外を発生させる

Kernel#raiseを使用する。

# 第一引数に文字列を指定すると、RuntimeErrorが発生
raise 'error!' #=> RuntimeError: error!

# 第一引数に例外クラスを指定出来る
raise StandardError, 'error!' #=> StandardError: error!

例外を捕捉する

例外の発生する可能性のある式はbegin〜endに記述する。

begin
  do_process
rescue => e # 例外オブジェクトを変数eに代入
  puts "puts #{e.class}"
end

# 例外を指定すると、指定したクラスとそのサブクラスの例外が捕捉される
begin
  do_process
rescue Exeption => e # 例外オブジェクトを変数eに代入
  puts "puts #{e.class}"
ensure # 最後に必ず実行する処理
  puts 'ここまでで処理は終了しました'
end

例外オブジェクトの主な操作は以下の通りです。

# クラス名
e.class #=> StandardError

# エラーメッセージ
e.message #=> "error!"

# コールスタック
e.backtrace #=> ["sample.rb:9:in 'maaain'", "sample.rb:11:in '<main>'"

終わりに

開発において例外処理をすることは、かなり重要になってきます。
ここを怠ると、自分で発見出来ていないバグによって、サービス利用者に迷惑をかけたりすることもあるので、意識して記述して行きましょう!!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0