エラーハンドリング(例外処理)について

f:id:ryoutaku_jo:20190508005937p:plain

【結論】

・エラーハンドリング(例外処理)とは、プログラムの処理が何らかの原因で完了しなかった際に、それをエラーとして検知する為の処理。

・エラー検知すると実行中のプログラムは中断し、エラー時の処理を実行する

・本番環境にてHTTPエラーが発生した際に、任意のエラーページを表示させる際にも利用される

【目次】

【本題】

エラーハンドリング(例外処理)について

エラーハンドリングとは、プログラムの処理が何らかの原因で完了しなかった際に、それをエラーとして検知する為の処理を指します。 例外処理とも呼ばれています。

なお、処理が完了しなかった場合には、その処理を中断し、エラー時の処理を実行します。

実装例

Rubyでは、下記の様な記述で例外処理を実装するのが一般的です。

begin
  puts 10 / num
rescue
  puts  "計算が完了しませんでした"
end

beginの後に来た処理を実行し、問題なければ、それを返します。 しかし、この処理でエラーが発生した場合は、rescueの後に記述されている処理を実行します。

上記の処理であれば、下記の様に変数に格納した値で、処理の結果が異なります。

num = 1
10
num = 0
"計算が完了しませんでした"

numが0以外の数字であれば、エラーは発生しないので、計算結果をそのまま返します。

但し、数字が0だったり、文字列が格納されているとエラーが発生します。 エラーが検知されると、その後の処理が呼び出されるので、上記の様な結果になります。

エラーページ

なお、Railsの場合、開発環境ではエラーが発生しても、ブラウザ上にエラー箇所などの詳細情報が表示されるので、デバックが捗ります。 しかし、本番環境でエラーが発生しても、ログに記録されるだけで、ブラウザ上で細かいエラーを把握する事が出来ません。 また、表示されるのは無骨なデフォルトのエラーページなので、万が一ユーザーがそれを目撃した場合、サイトへの信頼性が損なわれます。

そういった事を防ぐために、エラーページを任意の内容に変更する手段もRailsには備わっています。 実装方法については、下記のサイトなどが参考になります。

Rails 5の404/500エラーページ、簡単作成手順 | 酒と涙とRubyとRailsと

参考情報

エラーハンドリングとは何? Weblio辞書

Rails 5の404/500エラーページ、簡単作成手順 | 酒と涙とRubyとRailsと

《今日の学習進捗(3年以内に10000時間に向けて)》

 GW中に個人開発でCKEditorを利用したWEBサイトを自作したが、開発環境では正常に動作するにも関わらず、本番環境で画像アップロードが出来ないエラーが発生した。  業務のアプリケーションも似たコードで実装している事から、同様の事象が発生する可能性が考えられる為、詳しく調査をしていきたい。  また、今後もこの様に、プライベートの学びを業務に還元できる様に努めていきたい。

学習開始からの期間 :151日
今日までの合計時間:1474h
一日あたりの平均学習時間:9.8h
今日までに到達すべき目標時間:1379h
目標との解離:95h
「10,000時間」まで、

残り・・・「8526時間!」