Ошибки и вылеты при игре¶
Ошибки во время игры (ошибки рантайма) и варианты их решения.
Как читать трассировку ошибки¶
Здесь должна быть картинка.
В данном разделе представлены основные ошибки и вылеты.
Tried to read from address zero / Tried to write to address zero¶
Попытка чтения/записи по указателю NULL (по указателю, который не связан ни с каким объектом). Способ решения зависит от контекста, но в общем случае следует поставить проверку на NULL :
// Сохраняем в указатель `lt` значение, которое может оказаться и пустым:
Actor lt = GetLinetarget();
// Если
if ( lt == NULL ) {
return;
}
Division by zero¶
Деление на ноль запрещено.
Если это действительно необходимо, то проще всего это обойти через добавление условия проверки на ноль перед проблемным местом:
int x = 1000;
int y = SomeFunction(); // Предположим, здесь может возвращаться и "0".
int result;
if ( y != 0 ) {
// Если делитель — не "0", делим как нужно.
result = x / y;
} else {
// Если всё-таки "0", сохраняем предзаготовленное значение.
result = 0;
}
VM execution aborted: thrown exception¶
Или как-то так, уточнить. Было выкинуто пользовательское исключение.
Array out of bounds¶
Выход за пределы массива. Подробнее можно почитать в статье про массивы.