>>350
上級Javaグラマーアカデミー一般命令・規約

規約6第23項18節
パラメータとして渡される値に関して
クラスの不変式を破っているオブジェクトの生成を防ぐため一般原則の特殊な場合として
メソッドおよびコンストラクタは後で使用されるパラメータの正当性を検査すべき
非公開メソッドに関しては一般に、アサーションを用いて検査すべき
上記規約に対する例外として、正当性検査のコストが高いか現実的でなく、かつ
正当性検査が計算の処理の中で暗黙的に行われる場合はこれに該当しない
また暗黙的検査によって誤った例外がスローされる場合はエラーアトミック性が失われることになるため
このような状況下においては抽象概念に適した例外をスローできるようにイディオムを使用すべき