我期待开始做我的JavaScript多一点错误的证明,而且我发现很多文档的使用try
,catch
,finally
,和throw
,但我不是专家在何时何地抛出错误找一吨的建议.
我也完全是因为听过有很多章节的书籍或对错误处理的深入解释而玩游戏.雄辩的JavaScript触及了这个问题,但对这个问题并没有很强的规定性或固执己见.
感谢您提出的任何建议!
我想在Angular.js的单页Web应用程序上实现身份验证.在官方文档角建议使用拦截器:
$provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) {
return {
// ...
'responseError': function(rejection) {
// do something on error
if (canRecover(rejection)) {
return responseOrNewPromise
}
return $q.reject(rejection);
}
};
});
Run Code Online (Sandbox Code Playgroud)
问题是当服务器发送401错误时,浏览器立即停止"未授权"消息,或者使用登录弹出窗口(当服务器发送认证HTTP标头时),但Angular无法使用它的拦截器捕获HTTP按照建议处理错误.我误会了什么吗?我试图在网络上找到更多的例子(这个,这个和这个为例),但他们没有工作.
有谁知道如何检查AngularJS中是否找不到资源?
例如:
//this is valid syntax
$scope.word = Word.get({ id : $routeParams.id },function() {
//this is valid, but won't be fired if the HTTP response is 404 or any other http-error code
});
//this is something along the lines of what I want to have
//(NOTE THAT THIS IS INVALID AND DOESN'T EXIST)
$scope.word = Word.get({ id : $routeParams.id },{
success : function() {
//good
},
failure : function() {
//404 or bad
}
});
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我正在构建一个应用程序,它被构建为一个Rails服务器应用程序,为客户端提供RESTful api.Rails服务器使用RABL.客户端是一个Angular JS客户端,执行标准的$ http调用(获取,放置等).
偶尔我的Rails服务器会产生一个错误(假设附加到对象的验证错误)甚至没有错误,在这种情况下我想向用户显示一些东西 - 错误例如,"记录没有保存,因为...... "或"记录已成功更新".
我试图在Rails端和Angular /客户端都映射出一个模式来处理这个问题.
至于Rails:
至于Angular:
我想我希望我不必在这里重新发明轮子,有人可以指出我目前使用和建议(和本地化)的模式.
如果在尝试加载资源时,如果在URL中使用URL中的参数加载API,那么将客户端重定向到错误路由的最佳方法是什么?
当某人访问例如orders/1时,他们会看到订单,但如果其中一个没有访问,订单未找到或发生任何其他异常,那么最好如何处理?
我怎么能设置全局AJAX处理程序,只有当我还没有为特定的AJAX调用定义错误处理程序时才会调用它?
如果发生错误,我的一些ajax调用确实需要做一些逻辑(例如重新启用按钮),但对于某些AJAX,我只需要在发生错误时显示错误消息.
例如,这段代码没有为AJAX调用定义任何错误处理程序,所以我想申请这个调用全局错误处理程序,我将只显示错误消息:
user.$delete().then(function () {
// on success
});
Run Code Online (Sandbox Code Playgroud)
但是这个AJAX调用已经定义了错误处理程序,我不想对它应用全局处理程序:
$scope.deleteButtonEnabled = false;
user.$delete().then(function () {
// on success
}, function(err) {
// Do some stuff and then show error message
$scope.deleteButtonEnabled = true;
alert('Error' + JSON.stringify(err))
});
Run Code Online (Sandbox Code Playgroud)