我有以下类:javascript是否有类似try catch的东西?
var a = $scope.option.userMap[userId].name;
当在中userMap没有价值有用户id的关键,就会失败。当它尝试执行没有定义的.name的错误消息时出现。
有没有简单的方法,我可以捕捉到这个错误?发生错误时,我想将变量a
设置为“未知”
我有以下类:javascript是否有类似try catch的东西?
var a = $scope.option.userMap[userId].name;
当在中userMap没有价值有用户id的关键,就会失败。当它尝试执行没有定义的.name的错误消息时出现。
有没有简单的方法,我可以捕捉到这个错误?发生错误时,我想将变量a
设置为“未知”
JavaScript有一些酷似try/catch语句,但为什么当你可以用它只需检查钥匙是否存在:
if (userId in $scope.option.userMap) {
var a = $scope.option.userMap[userId].name;
}else{
var a = 'unknown';
}
非常好,除了'a'应该设置为“未知”:) – usr2564301
@Jongware - 是的,这可能更好;-) – adeneo
+1,顺便说一句,回答问题不问:[盲目使用'抓住'或检查您的代码的错误](http://stackoverflow.com/questions/3217294/javascript-try-catch-performance-vs-error-checking-code) – usr2564301
是的。
try {
var a = $scope.option.userMap[userId].name;
} catch(e) {
//catch a error
} finally {
//execute always
}
关于finally
块VS return
声明:
function something() {
try {
return $scope.option.userMap[userId].name;
} catch(e) {
return e.message
} finally {
alert('Yohoooo!')
}
}
你总会看到alert
调用something
功能时。
当然:
try {
// Live hard...dangerous code
} catch(e) {
// Manage your mess
}
Optionall你可以添加一个finally从句,始终执行:
finally {
// Always executed
}
是的,有。
这是语法:
try {
//Run some code here
} catch(err) {
//Handle errors here
}
欲了解更多信息:
下载我的个人资料说明中列出的插件 –
虽然答复上面已经回答的JS是否有try/catch语句功能的问题,他们没有指出使用try/catch块来解决未定义的变量不是最佳实践。更好的方法是:
var userObj = $scope.option.userMap[userId];
var a = userObj ? userObj.name : undefined;
是的,JavaScript有'try' /'catch'。 – Alnitak
您是否试用过Google First? - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch –
这个问题似乎是脱离主题,因为它可以通过看看该语言的文档。 – Cerbrus