LoginSignup
0
0

More than 3 years have passed since last update.

エラーを止めるな!

Last updated at Posted at 2020-12-12

こんなコード書いたことある人多いと思います

example.rb
counter = 0
begin
  some_function
rescue => e
  # なんか知らんけどたまにエラーになるから3回までやり直す
  counter += 1
  retry if counter <= 3
end

もっとひどい場合だとスルーしている場合も

example.rb
counter = 0
begin
  some_function
rescue => e
  # なんか知らんけどたまにエラーになるけど、別処理でカバーしてるので無視
end

私も過去に「絶対に問題ないはずなのに何故かたまにエラーになるクエリ」などDBやKVSの接続周りで謎のエラーに悩まされ、retryでごまかしたことがあります。

こういう対処をすること自体は問題ないですが、その現象がどこにもアウトプットされていないことに問題があります。そのことを知っている人がチームから離れてしまった場合、引き継がれたメンバーはその問題に気づく余地がありません。その問題が後に大きな問題につながったりするかもしれません。または新しいメンバーがその解決方法を知っているかもしれません。人力による引き継ぎに頼るのではなく、起きている不具合は人の目に触れるところにアウトプットしなければいけません。

ということで、現象が起きるのが稀ならEメール、頻繁ならエラーログなどで記録を残すようにしましょう

example.rb
counter = 0
begin
  some_function
rescue => e
  # なんか知らんけどたまにエラーになるから3回までやり直す
  logger.warn "Unknown error at some_function (retry #{counter}) #{e}"
  counter += 1
  retry if counter <= 3
end

どんな些細なことでも、ログには常に残るようにしておくべきですね。

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