javascript有什么像try catch吗?

Sam*_*tar -5 javascript

我有以下课程:

var a = $scope.option.userMap[userId].name;
Run Code Online (Sandbox Code Playgroud)

当userMap中没有值具有userId键时,这会失败.当它尝试执行未定义的.name时会出现错误消息.

有一种简单的方法可以捕捉到这个错误吗?当错误发生时,我希望将变量a设置为"unknown"

Pin*_*nal 5

是.

try {
    var a = $scope.option.userMap[userId].name;
} catch(e) {
    //catch a error
} finally {
    //execute always
}
Run Code Online (Sandbox Code Playgroud)

关于finallyblock vs return声明:

function something() {
    try {
        return $scope.option.userMap[userId].name;
    } catch(e) {
        return e.message
    } finally {
        alert('Yohoooo!')
    }
}
Run Code Online (Sandbox Code Playgroud)

您将始终看到alert调用该something函数的时间.