一部抜粋
try { // tryの中が全部で300行ぐらい DBRtn = ... if (DBRtn.equals("")) { ErrorCode = "E00001"; throw new Exception(); } // ..この後も同じような処理がダラダラ続く } catch (Exception e) { } if (ErrorCode.equals("E00001")) { // エラー処理1 } elsif(ErrorCode.equals("E00002")) { // エラー処理2 }
例外スローがgotoのように使われているところを見ると、おそらくVB6辺りのユーザがJavaで頑張ってみました的なコードだろう。単にJavaプログラミングを理解していないだけの酷いコードなら、もっと酷いコードはいくらでもある。だけど、これサーブレットでErrorCodeがインスタンス変数だったりするんだな。もちろんシングルスレッドモデルではない。まともなWeb系Javaエンジニアならどんな問題が起こるか即座に理解出来ると思う。
作ったのは一部上場のそこそこ名前の知られた会社なのだが、他社にソース開示する前にレビューぐらいしてほしい。よもやレビューはしたけれども正しいサーブレットの書き方を知ってる人間がいなかったということはあるまいな。