[英]Exception Handling In Angularjs HTTP Methods
我是angularjs的新手。 我正在使用angularjs 1.4版本。 我試圖處理從Spring控制器方法拋出的異常。 但我無法在下面的js中捕獲異常。
可能這是重復的問題,但我已經搜索了SO中的解決方案。 但沒有奏效。 請給我這個建議。 提前致謝。
在Spring MVC控制器方法中拋出異常也是正確的嗎? 或者如何對前端說500錯誤?
在角度控制器中:
Service.calculate (obj).then(function(response){
// logic
});
在Angular服務中:
this.calculate = function(obj){
try {
return $http.post(PATH+'txn/calc',obj).then(function(resp){
return resp;
});
} catch (e) {
alert(e);
}
};
彈簧控制器方法:
@RequestMapping(value = "/txn/calc", method = RequestMethod.POST)
public @ResponseBody someBean calculate(@RequestBody SomeBean someBean , HttpServletRequest request) {
try {
// exception occurs here
} catch (Exception e) {
throw e;
}
}
嘗試這個:
$http.post(url).then(function(response) {
console.log('post',response)
},
function(data) {
// Handle error here
})
你應該添加一個函數作為then函數的第二個參數,如下所示:
$http.post(url).then(
function(response) {
console.log(response);
},
function(data) {
// Handle error here
console.log(data);
})
您不必在javascript函數中使用Try Catch。 你需要使用你的諾言中的catch函數。
this.calculate = function(obj){
return $http.post(PATH+'txn/calc',obj).then(function(resp){
return resp;
}).catch(function(error){ alert(error) };
};
最好的實踐是使用服務或工廠來回報承諾。 然后在服務中應用then和catch功能。
app.factory('myService',myService);
myService.$inject('$http');
function myService($http){
var services = {
calculate:calculate
}
return services;
function calculate(obj){
return $http.post(PATH+'txn/calc',obj)
}
}
將服務或工廠注入控制器並從中調用功能后。
app.controller('myCtrl',myCtrl);
myCtrl.$inject = ['$scope','myService'];
function myCtrl($scope,myService){
var vm = this;
vm.calculate = function(obj){
myService.then(success).catch(error);
function success(response){...}
function error(response){...}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.