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

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

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

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

用的是 .Net SDK

真的是这样吗?
我 .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 ===