Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

СТП / lec / java2014-lec-06

.pdf
Скачиваний:
6
Добавлен:
03.03.2016
Размер:
683.07 Кб
Скачать

Отладка с помощью проверочных утверждений (assertions)

// Считает факториал числа n. Число n должно быть в пределах от 0 до 10 int factorial(int n)

{

//Факториал отрицательного числа не вычисляется assert(n >= 0);

//Если n превысит 10, то это может привести либо к целочисленному

//переполнению результата, либо к переполнению стека.

assert(n <= 10);

if (n < 2) { return 1;

}

return factorial(n - 1) * n;

}

//мы 'забыли' об ограничениях функции factorial() и пытаемся вычислить

//факториалы чисел от 0 до 99.

//проверка внутри factorial() напомнит нам о своих ограничениях,

//так что мы сможем быстро выявить и исправить этот баг.

//если бы эта проверка отсутствовала, то баг мог бы долго оставаться незамеченным,

//периодически давая о себе знать переполнениями стека и некорректным поведением for (int i = 0; i < 100; ++i) {

a[i] = factorial(i);

21

}

Отладка с помощью проверочных утверждений (assertions)

22

Реализация постусловий с помощью

проверочных утверждений (assertions)

23

Управление механизмом проверочных утверждений

во время выполнения программы

Если механизм проверочных отключен, то код работает также быстро, как будто бы их там и не было вообще

По умолчанию механизм проверочных утверждений выключен. Включается следующим образом:

java –enableassertions MyProgram

или

java –ea MyProgram

Механизм проверочных утверждений может быть включен отдельно для классов, пакетов или наборов пакетов.

24

Соседние файлы в папке lec