我有以下類: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