ファイルをロードする時の注意

ファイルを読み込むコードを書きました。

list = {}
File.open("namelist.data", "rb") do |file|
  list = Marshal.load(file)
  if list.size == 0
    puts("listがありません")
  end
end

ここで、問題が・・・

  • load()は絶対に成功するの?
  • ファイルを読み込んでる間に、他の人にファイルを消されてしまった場合はどうなるの?

などといったように、if list.size == 0だけでは対処できません。なので、ここは例外を使いましょう。

list = {}
begin
  File.open("namelist.data", "rb") do |file|
    list = Marshal.load(file)
  end
rescue
  puts("listがありません")
end

結論

エラーが起きやすい状況、例えば、プログラムが外部アクセスをする時には例外処理を行うべき。