如果服务器上发生异常,我希望能够自定义传递给客户端的错误对象。
我在客户端使用'then'函数来处理成功和失败:
hub.server.login(username, password).then(function(result) {
// use 'result'
}, function(error) {
// use 'error'
});
如果登录成功,'result' 是服务器上 Login 方法的返回值。如果登录失败,我会抛出“CustomException”异常。这是“代码”属性的例外。
if (!IsValidLogin(username, password))
throw new CustomException { Code: "BADLOGIN", Message: "Invalid login details" };
如果我启用了详细异常,则客户端上的“错误”参数是“无效登录详细信息”——异常的消息属性。
有什么方法可以选择性地将错误结果从字符串更改为复杂对象?即,如果在集线器方法中抛出“CustomException”,则为客户端失败处理程序返回一个 {Code:[...], Message:[...]} 对象?
这应该展示我希望在客户端上看到的内容:
hub.server.login(username, password).then(function(userInfo) {
alert("Hello " + userInfo.Name);
}, function(err) {
if (err.Code === "BADLOGIN.USERNAME")
alert("Unrecognised user name");
else if (err.Code === "BADLOGIN.PASSWORD");
alert("Invalid password");
else
alert("Unknown error: " + err.Message);
});
(注意 'err' 上的 'Code' 和 'Message' 属性)。