こんなコード書いたことある人多いと思います
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
どんな些細なことでも、ログには常に残るようにしておくべきですね。