Skip to content

API Basic SafeCall zh tw

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 — 現有程序或函式的名稱。遊戲 API 必須使用 UO.;BASIC 內建函式不加前綴。
  • arguments — 所選函式的一般引數。必須使用括號,Safe 與 Call 之間使用空格。

傳回值

傳回原函式結果。Unit 仍表示沒有值;Safe Call 不會把結果轉成 true/false。

行為

  • 呼叫仍在目前腳本流程中執行,遵守一般引數、ByRef、返回及取消規則,不會建立獨立工作。
  • 不會抑制錯誤。請使用 Try/Catch 處理;Safe Call 本身不是錯誤處理器。
  • RaiseEvent 不允許此前綴。新程式通常可直接使用 FunctionName(...)。這是本引擎的相容語法,不是標準 VB.NET 結構。

範例

1. 呼叫自訂函式

# Sum 收到 x=20y=22傳回 42Safe 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 得到 130Val  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