Ognacの雑感

木漏れ日々

目次

Blog 利用状況

書庫

ギャラリ

エラーを握り潰しちゃダメ

VB6システムは、まだまだ現役で、新規開発もあったりします。開発者の思いとは裏腹に。当然なから、改修の仕事も時折発生するわけです。とあるシステム改修現場でのこと。
「納得できない妙な動作をしています」との訴え。
確かに、業務仕様とは異なる動作をしている。いままで動作していて、急におかしくなるときは、データに起因することが多い。データを閲覧すると、想定外の規約コードや、桁オーバーの値がチラホラ。
エラーログにもエラー状況は書かれていない。異常データだから、落ちてもよさそうなのに落ちない。
内部仕様書をみても埒が明かないので、ソースを見ることにした。
Public Property Let xxx(ByVal yyy As 区分)
   On Error GoTo ErrHandler
    xx区分 = 区分
     Exit Property
    ErrHandler:
End Property
 関数やプロパティのすべてに on Error goto ErrHandlerが入っている。これはいい。でも

   ErrHandler:    
End Property
 で握りつぶしている。そりゃないよ。半分ほどは、Logに書いているけど。
  ErrHandler:
       Log出力
End Property
 これじゃ、正常終了したのかどうか、いちいちログをみなきゃだめだし、ログにもかかれず葬られた処理があるかもしれない。


とりあえず、全部のErrHandler: のあとに、Log出力を咬ませた。不具合が出る出る......いままで正常とされていたのも、実はおかしかった...というのも発覚。
開発元を捕まえて、文句をいうと、「当時の開発指針に則っています。」との返事。

開発指針には、「各関数には on Error goto ErrHandler を咬ますこと。」と明記はされているが、握りつぶせとは書かれてない!!!

「サラリーマン開発者はプロではないのか」と愚痴りたくもなった。 落ちないシステムは大事だか、不正データの対策は、安全に回避ルーチンに陥るのが望ましいが、結構考慮点が多岐にわたるので、工数増になります。

予算と工期がないとき、素直に落とすほうが、よほど後々のデバッグが楽になります。

どこで落ちたか、解る仕組みの実装するのがプロです。不確か状態で継続動作するより、落ちたほうがマシと思うのだが。

(*)もちろん、Try catch処理の時も握り潰しちゃだめですよ。

投稿日時 : 2010年9月3日 0:15

Feedback

# re: エラーを握りつしちゃダメ 2010/09/03 3:21 ちゃっぴ

もっとお粗末なものの代表例。

Anonymous FTPで公開されていたGlobal.asaが示すもの 岡崎図書館事件(6)
http://takagi-hiromitsu.jp/diary/20100821.html#p01

こんなのが、いまだに Internet で公開されているなんて驚きとしか言えないですね。

# re: エラーを握り潰しちゃダメ 2010/09/03 11:38 かたぎり

「握りつぶせ」と書いてない代わりに、
「握りつぶすな」とも書いてないんだったら、
開発者のやったことは「一番当たり障りのない正解」
理不尽だけどね。
それがまかり通る世界だってあるんだし。しょうがないわな。

意外とデリケートな問題で、受け入れテスト(あったのならね)の時に
そういうエラーの挙動をケースにいれなかった、試さなかった、
という発覚できなかった方の落ち度になる危険だってはらんでる

エラーでまくって「品質低下」するよりも
握りつぶして「エラーが出ない」方が評価される。
この時点で、社会って理不尽、って学んでいくわけだけどさ。


もちろん、モノ作り屋さんとしての視点で言うなら
「しねよ、その場で、すぐに腹かっさばけよ」
と思うくらい、許せんなぁとも思いますけれどもね。

# re: エラーを握り潰しちゃダメ 2010/09/04 0:42 Ognac

>岡崎図書館事件(6)
いろいろ波紋を呼んだみたいですね。
それにしても、お粗末以前のようで、これで高給だった日にはねぇ。
>社会って理不尽、って学んでいくわけだけどさ。
理不尽を納得するには、ある程度経験がいりますよね。
「筋が通る通らない」と「合理性の有無」は別次元だし、会社の方針は、性能/能力より、グループ会社の援助の意味があったり....うにょうにゅ.....ww

# re: エラーを握り潰しちゃダメ 2010/09/04 23:35 制御系の人

モノを動かすようなプログラムだとその場で死ぬのが一番危険だったり。
ちゃんとモノを安全な状態(止まるとか)にしてから死んでくれないと、人が死ぬことになったりとか・・・

# re: エラーを握り潰しちゃダメ 2010/09/05 1:16 Pasie.

 私も制御系ですが…
 とはいえResume Nextみたいなので握りつぶすと、プログラム暴走状態になってもおかしくないわけで、FailSafeにはならないですよね。結局はちゃんとお手当てしろってことなんだけど…
 まあプログラムが落ちると緊急停止すら受けられないので、それはそれでヤバイわけですが。

# re: エラーを握り潰しちゃダメ 2010/09/05 8:32 Ognac

「落ちたほうがマシ」というのは語弊がありましたが、
・壊れたことが判る
・安全に壊れる
・原因が分かるように壊れる
が大事ですね。握り潰されると解明が泥沼化しがちなのは、制御系でも、事務系でも同じと思うのです。

# idpfDQuwKJhAYOHNhB 2014/08/28 4:34 http://crorkz.com/

C4vtsB I am continuously looking online for articles that can help me. Thanks!

タイトル  
名前  
Url
コメント