OnErrorResumeNextは必要か

スクレイピングで取ってきたデータをマッピングする時にふと思った。途中でエラーを投げつけられてもひたすら処理を続けられたらと。

昔VBAのコードを書いていたころ On Error Resume Next には大変お世話になった。なんてったってエラーで止まることがない!たまに変なことしたらおかしなことになるけど、ちゃんとした使い方でやってたら大丈夫!ってことで乱用していた。もちろん今じゃそんなことしないし、VBAを書く機会もない。

しかし今回の場合、
うまくデータが取れませんでした

変なデータだけど取り敢えず処理しました

結果出したけどおかしいって気付くよね?
みたいな流れでもいいんじゃないかと誰かが囁いた。人は楽な方に流されやすい。C#でもOn Error Resume Nextを実現するためのコードを書いた。using句みないな感じで出来たらいいのにと思ったけどないものは仕方ない。

これで解決、というわけじゃない。問題はもっと根本的なところにある。
スクレイピングで取ってきたデータをうまく処理できないということはソースに変更があったということになる。となると、場合によってはエラーが何百、何千回と投げられる。信頼性もない上にエラーが大量に投げられるならば、データの取得に失敗したと包み隠さずエラーを一つ投げ、もっと上の層でその対処を考えた方がいい。

以前も一度同じようなことを考えて同じような結論になった気がするので、二度とこの問題に時間を費やさないようここに記す。

About houzkin

Leave a comment


*