С ассертами программист может проверять допущения во время работы программы. Синтакс при этом - assert(условие). Если ассерт не верен, то выполнение программы прекратиться с соответствующим сообщением об ошибке. Существует еще несколько видов ассертов в стандартном пространстве имен GLib:
assert_not_reached() |
---|
return_if_fail(bool expr) |
return_if_reached() |
warn_if_fail(bool expr) |
warn_if_reached() |
Вы можете попытаться использовать ассерты для проверки аргументов метода на null. Однако это вовсе не обязательно, т.к. Vala неявно проверяет все методы, которые не помечены ?.
void method_name(Foo foo, Bar bar) {
/* Не обязательно, Vala делает это за вас:
return_if_fail(foo != null);
return_if_fail(bar != null);
*/
}
Vala поддерживает базовые возможности контрактного программирования. Метод может имет предусловия(требования) и постусловия (удостоверение), которые должны пройти до и после выполнения метода соответственно:
double method_name(int x, double d)
requires (x > 0 && x < 10)
requires (d >= 0.0 && d <= 1.0)
ensures (result >= 0.0 && result <= 10.0)
{
return d * x;
}
результатом
является специальная переменная, представляющая возвращаемое значение.