メソッドの引数が不正だった場合に IllegalArgumentException をthrowするのはよく使っていたりしていたけど、、、
ただ、それとは別に IllegalStateException というものがあって、これがオブジェクト状態が不正のときに使うものだとは知らなかった。
例えばあるオブジェクトのフィールドがnullを保持して欲しくないのに、実際はnullだったときなど、オブジェクトのフィールド絡みのときに使うらしい。