エラー処理

エラー処理

現時点では、URL無しやURLがめちゃくちゃだとエラーが発生します。

上記のような表示だと、エラー内容が分かりづらくユーザーに伝わりません。これを、以下のようにエラー内容がわかるようにしていきます。このような、エラー処理のことをエラーハンドリングといいます。

例外処理を使う

例外処理を使ってエラーハンドリングを行います。以下のようにデタラメなURLで保存された場合に「無効なURLです」と表示されるようにします。

例外処理の書き方は以下のようにrescueを使って処理します。文法は以下の通りになります。

では、エラーが発生する部分を追加してみます。

begin
  meta = MetaInspector.new(@clip.url)
  @clip.title = meta.title
  @clip.description = meta. best_ description
  @clip.image = meta.images.best
rescue
end

これでエラーはなくなります。しかし、このままだとエラーは無視されて保存されてしまいます。中身はからっぽのまま保存されてしまうので、これは良くないですよね。

これを防ぐために、エラーが起こった後の処理を書いて、保存されずにエラーメッセージが出るようにしてみましょう。

begin
  meta = MetaInspector.new(@clip.url)
  @clip.title = meta.title
  @clip.description = meta. best_description
  @clip.image = meta.images.best
rescue
  @clip.errors.add(:base, "無効なURLです")
  render :new
  return
end
吉田先生

@clip.errors.add(:base, "無効なURLです")って何?

オブジェクトを保存する時に問題がある場合にはRailsはエラーを返しますよね。例えばvalidationの設定をしているときなどは「文字が短すぎますよー」などのエラーが返ってくる場合があると思います。実は、これらのエラーは@オブジェクト.errorsの中に入っていて、それを表示しているのです。

今回のresueでやっている部分は、MetaInspectorでエラーが起こった場合に、そのエラーをオブジェクトに加えているということですね。ちょっと難しいですが、まぁエラーメッセージが出るようにしていると考えて良いでしょう。

これで、保存されずにエラーメッセージが表示されるはずです。ブラウザで試してみましょう。

課題

エラー処理を実装して完成させましょう。

まとめ

この教程では、MetainspectorというURLを入力すると自動でMeta情報を取ってきてくれるgemの実装を行いました。また、実装する中でデバッグ(バグを見つけて修正する)やエラー処理についても学びました。

無料ビデオ講座のお知らせ

Skillhub [スキルハブ]では無料の動画講座を多数公開しています。他校だと数万円するような講座が無料で受講できます。

無料講座一覧を見る

×