[英]Exception/Error Handling in q kdb — Alternative of Try-Catch-Finally(Java)/Try-Except-Finally(Python)
[英].Q.trp and bt handling
我看到(在.Q.fpn
中)以下技術來解析並顯示傳遞給.Q.trp
function 的bt
object:
q)f:{x+1}
q).Q.trp[f;`a;{'(x;y)}]
'type
[4] f:{x+1}
^
[3] (.Q.trp)
[2] .Q.trp[f;`a;{'(x;y)}]
^
[0] .Q.trp[f;`a;{'(x;y)}]
^
'(x;y)
似乎是一種異常構建結構,但 Kx 文檔說只有兩種異常構建方式:從符號和從字符串。 看起來我們可以從(symbol; bt object)
的列表中構建一個異常。
那么構造'(x;y)
代表什么?
我們可以用'(x;y)
構建與異常不同的東西嗎?
我的猜測是,這是最近允許添加的特定信號以及 .Q.trp/.Q.bt 功能。 看起來它僅適用於(symbol;bt object)
或(string;bt object)
,其他任何東西都無法識別。
q).Q.trp[{1+x};`a;{'(x;y;1)}]
'stype
output如果沒有信號返回可以存儲:
q)r:.Q.trp[{1+x};`a;{(x;y)}]
並且這種類型的信號似乎在任何情況下都有效,而不僅僅是在.Q.trp 內:
q)'("other";last r)
'other
[2] {1+x}
^
[1] (.Q.trp)
[0] r:.Q.trp[{1+x};`a;{(x;y)}]
我懷疑last r
具有非常特定的格式/形狀,人們可以制造,但它似乎是一個不必要的用例。
額外的怪事:
這有效:
q)'("other";())
'other
[0] '("other";())
^
但我嘗試過的其他事情出現了奇怪的錯誤:
q)'("other";(();()))
pl0
pl0
q)
q)'("other";"abc")
srr
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.