AngularJS의 페이지 로딩 에러 처리하기 (Page loading error in angularJS)
4월 03, 2018
In Javascript |
하이브리드 앱을 AngularJS로 작업하다 보니 네트워크 처리가 여간 귀찮은게 아니었습니다.
그래서 최상위 controller에서 에러에 대한 처리를 하고 각 controller에서는 네크워크 에러 여부만 전달하는 방식으로 고민 하다보니 $exceptionHandler
라는 것을 알게 되었습니다.
저의 경우 초반에 exceptionHandler
에서 exception
를 받기는 하는데 다시 $state
처리가 되지 않아서 고생했습니다. 아마도 exceptionHandler
에서는(혹은 사용하는 위치에 따라?) injector
를 사용해야 정상동작을 하는 것 같습니다.
그렇지 않으면...많이 보셨던 아래 문구를 또 보시게 됩니다.
Unknown provider: eProvider <- e <- $exceptionHandler <- $rootScope <- $q <- $exceptionHandler
아래는 예제 코드 입니다.
angular.module('MyApp').factory('$exceptionHandler', ['$injector', function ($injector) {
return function (exception, cause) {
console.log("======================= exception", exception);
console.log("======================= cause", cause);
var state = $injector.get('$state');
state.go("signin");
};
}]);
각 controller 에서는 http 통신결과가 200이 아닐 경우 exception를 던지고 끝
if (res.status == 200) {
if (typeof callback == "function") {
callback(res.data);
}
}
else {
// http 통신이 200이 아닐 경우 처리
$exceptionHandler(res);
}