gpt4 book ai didi

javascript - 如何在 AngularJS 中抛出自定义异常?

转载 作者:行者123 更新时间:2023-11-28 15:02:30 25 4
gpt4 key购买 nike

我有一个包含以下服务的 exception.js 脚本:

app.service('Exception', function() {
this.ArgumentUndefinedException = function (message) {
if (!message) {
message = "One or more of the arguments are undefined!";
}
return {
name: 'ArgumentUndefinedException',
message: message
};
}
});

现在我在另一个服务中使用它:

app.service('Joins', ['Exception', function(Exception) {
this.LEFTJOIN = function(leftArray, rightArray, joinOnLeft, joinOnRight, columnFromRightArray) {
if (!leftArray) {
throw new Exception.ArgumentUndefinedException("Left Array is not defined for LEFTJOIN!");
} else if (!rightArray) {
throw new Exception.ArgumentUndefinedException("Right Array is not defined for LEFTJOIN!");
} else if (!joinOnLeft) {
throw new Exception.ArgumentUndefinedException("Join On Left is not defined for LEFTJOIN!");
} else {
// code to do the left join.
}
}
}])

然后,当我在 Controller 中使用 Joins 服务而不定义所需参数时,不会引发自定义异常。我在控制台中没有看到任何其他错误消息。它根本没有在表中显示任何内容。我做错了什么或者有更好的方法在 Angular 中抛出自定义异常吗?

最佳答案

这是一个工作 plunker您提供的代码对我来说非常有用!

我假设您正在从函数中的 Controller 调用 Joins 服务,以便在出现问题时抛出自定义异常。基于此,以下是有关如何调用服务的代码。

var app = angular.module("app", []);
app.controller('Ctrl', function($scope, $http, Joins) {


$scope.throwException = function() {
Joins.LEFTJOIN(false);
};
});

var app = angular.module("app", []);
app.controller('Ctrl', function($scope, $http, Joins) {


$scope.throwException = function() {
Joins.LEFTJOIN(false);
};
});

app.service('Exception', function() {
this.ArgumentUndefinedException = function(message) {
if (!message) {
message = "One or more of the arguments are undefined!";
}
return {
name: 'ArgumentUndefinedException',
message: message
};
}
});


app.service('Joins', ['Exception', function(Exception) {
this.LEFTJOIN = function(leftArray, rightArray, joinOnLeft, joinOnRight, columnFromRightArray) {
if (!leftArray) {
throw new Exception.ArgumentUndefinedException("Left Array is not defined for LEFTJOIN!");
} else if (!rightArray) {
throw new Exception.ArgumentUndefinedException("Right Array is not defined for LEFTJOIN!");
} else if (!joinOnLeft) {
throw new Exception.ArgumentUndefinedException("Join On Left is not defined for LEFTJOIN!");
} else {
// code to do the left join.
}
}
}]);
<html>

<head>
<script data-require="angularjs@1.4.8" data-semver="1.4.8" src="https://code.angularjs.org/1.4.8/angular.js"></script>

</head>

<body ng-app="app" ng-controller="Ctrl">

<button ng-click="throwException()">Exception</button>
</body>

</html>

更新

这是plunker重构代码,其中包含有关如何使用服务中的真值条件抛出所有不同错误的注释 Joins

 $scope.throwException = function() {
Joins.LEFTJOIN(true, false, false); //throw no left array
/* Joins.LEFTJOIN(false, true, false); //throw no right array
Joins.LEFTJOIN(false, false, true); //throw no join on left array
Joins.LEFTJOIN(); //throw default exception
*/
};

关于javascript - 如何在 AngularJS 中抛出自定义异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40446007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com