Before Hook 返回除了 142 之外的错误吗?

如题,有办法让 Before Hook 丢的 Exception 返回142以外的自定错误码吗?

在客户端里面希望可以透过错误码来做对应的错误处理。但目前好像就算 throw 了其他的错误码,客户端收到的还是142错误。

目前我的做法是直接把实际的错误码写在 Error Message 里面,透过 Regex 来抓取。

但这个办法一来很蠢,二来在某些同时被 Before Hook 及一般 Function 共用的代码中,如果把错误吗写进 Error Message 里面又回影响到其他没必要的一般云函数。(如果有办法侦测当前处理的云函数是不是 Hook 函数,也许可以改善这个问题,但暂时又找不到办法如何确认)

用的是 .Net SDK

参考文档,Hook 函数错误码可以通过截取字符串的方式取出错误信息,再转换成需要的对象。

1 人赞了这个帖子.

真的是这样吗?
我 .Net 云函数的 OnLoginSDK throw LCException 後,客户端(Unity) 收到的是

=== HTTP Response Start ===
URL: https://60fkowi7.api.lncldglobal.com/1.1/users
Status Code: BadRequest
Content: {"code":142,"error":"Cloud Code validation failed. Error detail : Ban reason: Test Ban\nUntil UTC: 2022-05-28 15:36:41Z\nID: 1d8ec7"}
=== HTTP Response End ===

Error Detail 并没有附上Hook函数错误码

您的 OnLogin Hook 具体是怎么写的呢?我试了一下,按照文档的写法部署了如下云函数:

 [LCEngineUserHook(LCEngineUserHookType.OnLogin)]
public static LCUser OnLogin(LCUser user) {
    throw new LCException(123, "An error occurred.");
}

部署成功后在 Unity 客户端试了一下,可以拿到的:

[DEBUG] 5/12/2022 1:54:13 PM === HTTP Response Start ===
URL: {{server url}}
Status Code: BadRequest
Content: {"code":142,"error":"Cloud Code validation failed. Error detail : {\"code\":123,\"message\":\"An error occurred.\"}"}
=== HTTP Response End ===