アサーションをifに置き換えるにはどうすればよいですか? 例:
public Wezel<Wartosc,Indeks> getWujek()
{
assert rodzic != null; // Root node has no uncle
assert rodzic.rodzic != null; // Children of root has no uncle
return rodzic.getBrat();
}
アサーションは、次とほぼ同等です。
if (!condition) {
throw new AssertionError();
}
これらのアサーションを置き換えると、次の検証の形式になります。
if (rodzic == null)
throw new MyValidationException("rodzic cannot be null");
if (rodzic.rodzic == null)
throw new MyValidationException("rodzic.rodzic cannot be null");
return rodzic.getBrat();
Exception
an を投げることと anをError
投げるException
ことには違いがあることに注意してくださいError
。たとえばMyValidationError
、失敗したチェックが回復不能である場合は、 を定義して使用することを検討できます。
public Wezel<Wartosc,Indeks> getWujek()
{
if(rodzic == null) { // Root node has no uncle
throw new Exception("Root node has no uncle");
}
if(rodzic.rodzic == null) {
throw new Exception("Children of root have no uncle");
}
return rodzic.getBrat();
}