Skip to content

API Basic SafeCall

Codex edited this page Sep 21, 2026 · 1 revision

Safe Call

ClassicUO • Basic

Safe Call — совместимый префикс обычного вызова. Он не добавляет защиту от ошибок, тайм-аут, блокировку или фоновое выполнение.

Точный синтаксис

Safe Call FunctionName(arguments)
VAR value = Safe Call FunctionName(arguments)

Параметры

  • FunctionName — Имя существующей процедуры/функции. Игровые команды требуют UO.; встроенные функции BASIC пишутся без префикса.
  • arguments — Обычные аргументы выбранной функции. Скобки обязательны. Между Safe и Call используются пробелы.

Возвращает

Возвращается исходный результат вызываемой функции. Unit остаётся отсутствием значения; Safe Call не преобразует результат в true/false.

Поведение

  • Вызов выполняется в текущем потоке скрипта по обычным правилам аргументов, ByRef, возврата и остановки. Отдельная задача не создаётся.
  • Ошибка не подавляется. Используйте Try/Catch для обработки; Safe Call сам по себе не является обработчиком ошибок.
  • В RaiseEvent этот префикс не разрешён. Для нового кода обычно достаточно обычного FunctionName(...). Это совместимость данного движка, а не стандартная конструкция VB.NET.

Примеры

1. Вызвать свою функцию

# Sum получает x=20 и y=22, возвращает 42. Safe Call не меняет возвращаемый тип или число.
FUNCTION Sum(x, y)
    RETURN x + y
END FUNCTION
SUB Main()
    RETURN Safe Call Sum(20, 22)
END SUB

Разбор параметров и выполнения:

Sum получает x=20 и y=22, возвращает 42. Safe Call не меняет возвращаемый тип или число.

2. Использовать результат встроенной функции в выражении

# Val получает строку "123" и возвращает число. К нему прибавляется 7; итог130. Valвстроенная функция BASIC, поэтому UO. не добавляется.
SUB Main()
    VAR text = "123"
    RETURN Safe Call Val(text) + 7
END SUB

Разбор параметров и выполнения:

Val получает строку "123" и возвращает число. К нему прибавляется 7; итог — 130. Val — встроенная функция BASIC, поэтому UO. не добавляется.

3. Перехватить ошибку явно

# Fail явно выбрасывает ошибку. Она доходит до Catch, где caught становится TRUE (1). Без Try/Catch ошибка распространялась бы дальше. Полный код Fail приведён ниже.
FUNCTION Fail()
    THROW "sample error"
END FUNCTION
SUB Main()
    VAR caught = FALSE
    TRY
        VAR value = Safe Call Fail()
    CATCH problem
        caught = TRUE
    END TRY
    RETURN caught
END SUB

Разбор параметров и выполнения:

Fail явно выбрасывает ошибку. Она доходит до Catch, где caught становится TRUE (1). Без Try/Catch ошибка распространялась бы дальше. Полный код Fail приведён ниже.

ru · en · uk · de · fr · it · es · zh-tw · ja · ko

Basic

Clone this wiki locally