とても正しく見えるバグ
すごく面白いバグに出会いました!以下のロジックは「messageが空でない場合messageをログに出力する」というロジックですが、必ずログが出力されます。ぱっと見ただけでこのバグに気づくでしょうか?
if (!StringUtils.isEmpty(message));{ log.error(message); }
正解は
ifの後ろにセミコロンがいます。なので見やすくしてみると
if (!StringUtils.isEmpty(message)); { log.error(message); }
こうなるわけです。だからmessageの空判定のifは有効でなく、必ずログ出力のロジックを通ってしまうんですねぇ(笑)うーん、おもしろいバグでした。