JSONでパースをかけるときに、変換できない形式のときにエラーになる。
空かどうかのチェックは事前にできるけど、パースができるかのチェックはできないようなので、nilで返してその後処理をするよう。
が、これだけのためにbegin句で複数行になるのは微妙かな?と思って調べてみると、1行でかけることがわかった。
橋本商会 » Rubyのrescueって1行で書くと値を返すのね・・
(以下、ざっくりとした例)
return nil if str.blank? # ここで事前チェックしたりなんだり result = begin JSON.parse(str) rescue => e nil end
str = '[' JSON.parse(str) rescue nil
が、rubocopの規約に引っかかったので、可読性を上げるためにも素直に複数行で書くようにしました。。
Style/RescueModifier:
Description: 'Avoid using rescue in its modifier form.'
StyleGuide: '#no-rescue-modifiers'
Enabled: true
※エラーの種別を判断して、きちんと処理しろということであってるのかしら。。
exceptions - Ruby-style-guide - Womply - Relish