サーバーで例外が発生した場合にクライアントに渡されるエラー オブジェクトをカスタマイズできるようにしたいと考えています。
クライアントで「then」関数を使用して、成功と失敗を処理しています。
hub.server.login(username, password).then(function(result) {
// use 'result'
}, function(error) {
// use 'error'
});
ログインが成功した場合、'result' はサーバー上の Login メソッドの戻り値です。ログインに失敗すると、「CustomException」の例外がスローされます。これは、'Code' プロパティの例外です。
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' プロパティに注意してください)。