<< 2006/06/21 | Home | 2006/06/23 >>
PR: 転職    葬式    マンスリーマンション 神戸    北海道    環境    FX    不動産担保融資    桐ヶ谷斎場    海外旅行    専門学校   

JavaSE 6.0β2

Derbyが入っているって触れこみだけど、入ってないよね? 探しかたが悪いのかな。

assertとIllegalArgumentException

入力値の事前条件チェックにassertとIllegalArgumentExceptionのどちらを使うか。

assertの方が記述が簡単(IllegalArgumentExceptionを投げるstaticメソッドを用意すれば、そんなに変わらないかな)。
assertは1.4以降でしか使えない。
assertは実行時に-eaオプションが必要で、慣れていないアプリケーションサーバとかは、どこで設定するのか分からなくて迷う。
assertなら不要な時はコンパイルオプションで簡単に削除できる。
assertはうっかり副作用のある式を書いてしまうバグが起こり得る。
あとassert使うとstaticイニシャライザがコンパイラで生成されて、この部分のせいで、コードカバレッジが100%にならないことがあり、気分的にすっきりしない(笑)

static {};
  Code:
   0:   ldc_w   #5; //class Foo
   3:   invokevirtual   #6; //Method java/lang/Class.desiredAssertionStatus:()Z
   6:   ifne    13
   9:   iconst_1
   10:  goto    14
   13:  iconst_0
   14:  putstatic       #2; //Field $assertionsDisabled:Z
   17:  return

他にもあるかな...

このサイトの掲載内容は私自身の見解であり、必ずしもIBMの立場、戦略、意見を代表するものではありません。
日本アイ・ビー・エム 花井 志生 Since 1997.6.8