From: Urabe Shyouhei Date: 2008-10-22T20:31:59+09:00 Subject: [ruby-dev:36865] Re: [Bug #650] Marshal.load raises RegexpError 卜部です。 石塚圭樹 さんは書きました: > 例えば, 配列の一要素が復元できなかった場合など, 複数のオブジェクトを再 > 生したとき, > > >>> obj = Marshal.load src, invalid: :replace >>> obj == Marshal::Invalid and raise "invalid data" >>> > > このやり方では, 実際にどのオブジェクトの再生に失敗したのか調べるのが難 > しいと思います. まず例外を発生させて, 再生できなかったことを明示的に知 > らせて, ではどこがおかしいのかな? って中身を調べられる方がよいのでは? > いや、まず例外が起きるなら現状と何ら変わりませんがな。 失敗したやつはともかくとして、それ以外の部分データを救いたいのが動機です。 # つまりそのサンプルコードはちょっといけてない > あと, この方法だと, オプションの指定も必要ないような気がします. 常にマー > カーに置き換えちゃえば良いので. > 例外のほうがうれしい局面ってあるんでしょうかね。 invalid: :replaceはもちろんString#encodeから引っ張ってきたアイディアです けど、String#encodeではなんでデフォルトが例外なんでしょうか。