yujiroのプログラミング

勉強内容をアウトプットし、サボらないようにする為のブログ

<DAY110> エラーハンドリングについて

\ Follow me!! /

学習状況

●学習日数 110日

●学習時間(本日)10時間
●累計学習時間 527.5時間

●一日あたりの平均学習時間 4.79時間

エラーハンドリングとは?

エラー発生時に、エラー発生原因を特定しやすくする。
エラー発生時にエラー発生で処理を止めるのでなく、
エラー発生時を想定し処理を記述する事で、ユーザーの使い勝手を高める

エラーをキャッチしたい範囲を決める。

エラーを取得したい範囲を
'begin~~~end'にて囲む

例えば、

class ItemsController < ApplicationController 
 begin
   def create
   create(params_create)
  end
 end
end

private
params.require(:item).permit(:name)

エラー時に処理したい記述をrescue~~に記述する。

class ItemsController < ApplicationController 
 begin
   def create
   create(params_create)
  rescue ActiveRecord :: RecordInvalid => e
 @item = e.record
 render :action => 'new'
  end
 end

DRYに記述するには?


createだけでなく、update,
destroyにも必要で同じ処理を記入するとDRYでは無くなります。
そのため、コントローラー全体に範囲を適用する'rescue from'を使用します。

class ItemsController < AplicationController

rescue from ActiveRecord::RecordInvalia do |exseption|

end