在查閱angularjs的官方文檔發現:
文檔中提到了throw異常
angular.module('exceptionOverride', []).factory('$exceptionHandler', function() { return function(exception, cause) { exception.message += ' (caused by "' + cause + '")'; throw exception; }; });
同時下面也提到了捕獲異常
try { ... } catch(e) { $exceptionHandler(e); }
其實這兩種在js異常處理中也經常用到,但是這和js中使用的有什么不同呢,下面我們就繼續考中一下,其實在angluarjs中要處理異常就必須使用service服務中的$ExceptionHander組件,引入組件后,你就可以大膽的處理不想調試的bug了,下面我就舉個例子:
var module = angular.module("apple", []);
module = [ '$scope' , '$exceptionHandler' , function ( scope, exceptlogger) {....
try { 函數體} catch(e) {exceptlogger(e); }
在做項目的時候發現有如果是調用插件的方法出現錯誤,如uncaught exception等錯誤,這種捕獲方式是無法捕獲異常的,那么我們就應該使用另一種捕獲異常的方式。
使用window.onerror的方法捕獲異常:
//捕獲函數體內或函數體外的錯誤 window.onerror = fnErrorTrap; function fnErrorTrap(msg,url){ console.log( "Error: " + msg+ "URL: " + url); //注意下面的返回值true,表示瀏覽器不對這個錯誤進行處理,不會顯示錯誤提示 return true; }
遇到這個異常的問題,因此特意整理了一下,不足之處,多多指正