Ognacの雑感

木漏れ日々

目次

Blog 利用状況

書庫

ギャラリ

2010年9月3日

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

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処理の時も握り潰しちゃだめですよ。

posted @ 0:15 | Feedback (8)