記事まとめ
例外の基本
パターン1
def some_method
1 / 0
rescue ZeroDivisionError => e
puts e.class
puts e.message
puts e.backtrace
end
パターン2
def some_method
begin
1 /0
rescue ZeroDivisionError => e
puts e.class
puts e.message
puts e.backtrace
end
end
使っていい場合
仲間を道ずれにしたくない場合など
users.each do |user|
beginn
send_mail_to(user)
rescue => e
puts e.backtrace
end
end
例外をかくポイント
-
ログを残す
- backtraceを
-
通知する
- slackなどに
-
例外の対象範囲は狭くする
-
例外もテストする
例外の対応方針
-
業務エラーとシステムエラーに切り分ける
- 業務エラー
- ユーザーミス
- 権限エラー
- システムエラー
- バグ(シンタックなど)
- ネットワーク、DBエラー
- 業務エラー
-
業務エラー
=>がモデルで対応
=> 返り血を検証する(saveなども true falseが返ってきている) -
システムエラー