Skip to content
This repository has been archived by the owner on Feb 26, 2022. It is now read-only.

Latest commit

 

History

History

error_handling

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

これでもう迷わない!エラーハンドリングで大事な、たったひとつのこと

subtitle : 2017/4/28 オプト社内勉強会

allotted-time : 15m

自己紹介

渋谷 充宏 @m4buya

  • なんでも屋
  • サーバーサイドプログラマだった
  • Ruby / Scala
  • https://github.com/mshibuya
  • RailsAdmin/CarrierWave committer

微妙なエラーハンドリング、見たことないです?

  • なんか握りつぶしやがってる!
  • エラー表示を見てユーザが「そう言われても…」みたいな気持ちになる
  • 怒られが発生してはじめてエラーに気付く

ねらい

システムにおけるランタイムエラーをどう扱ったらいいかについて、心構えを持っておきたい

今日扱わないこと

  • ランタイム時でないエラー
    • コンパイルエラーなど
    • がんばって直せ!!!

いろんなエラーがある

javaでいうと

  • FileNotFoundException
  • IOException
  • IndexOutOfBoundsException
  • NullPointerException
  • SQLException
  • ...

エラーとは

  • 「誰かがやりたかったことを達成できなかった」こと!

エラーハンドリングでもっとも重要なのは

  • 「なんとかできる人」が適切に状況を知れること
  • 「誰のせいなのか」によってなんとかできる人は変わる

具体例

  • データベースのクエリエラー
  • ディスクの空き容量不足によるファイル作成失敗
    • サーバサイドアプリケーションなら?クライアントアプリケーションなら?

具体例

  • 存在しないIDの項目を表示しようとした
  • 外部サービスのネットワークのタイムアウト

「状況を知れる」ということ

  • ログに吐かれるから大丈夫でしょ?
    • ログなんて誰も見ません!!!

メールで飛ばす?

  • まぁ気付くは気付くので、一歩前進

メールで飛ばすデメリット

  • 大規模な障害時にメールボックスが埋まる
    • 未読133545通みたいな
  • 「些細だけどなかなかつぶせないエラー」に重大なエラーが埋もれてしまう

エラー収集サービスを利用しよう!

  • Sentry
  • airbrake
  • errbit

まとめ

  • エラーとは「誰かがやりたかった何か」の達成に失敗したこと
  • 達成のためになにかできる人にきちんと知らせる必要がある
  • そのために適切なエラー収集の方法を確立しよう!

ご静聴ありがとうございました