現時点では、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
これで、保存されずにエラーメッセージが表示されるはずです。ブラウザで試してみましょう。
エラー処理を実装して完成させましょう。
この教程では、MetainspectorというURLを入力すると自動でMeta情報を取ってきてくれるgemの実装を行いました。また、実装する中でデバッグ(バグを見つけて修正する)やエラー処理についても学びました。
無料ビデオ講座のお知らせ
Skillhub [スキルハブ]では無料の動画講座を多数公開しています。他校だと数万円するような講座が無料で受講できます。