2013-03-27 66 views
1

如何在對象文字中做一些錯誤處理?
至少我希望它是這樣工作的:如何處理對象文字中的錯誤處理?

window.App={ 
    Variables:{ 
    "views_data": 
     try{ 
     json_parse(Drupal.settings.royal) 
     } 
     catch(e){ 
     JSON.parse(Drupal.settings.royal) 
     }   
    } 
} 
+0

@Lix感謝您的編輯......所以這不是一個noob問題; -P? – Jurudocs 2013-03-27 21:26:34

+0

不客氣@jur!不管你的問題是否是「小白鼠」,取決於誰在閱讀它。無論如何,我的編輯主要是將代碼格式化得更好一些,而當我處理代碼時,我刪除了與實際問題無關的任何內容。當一年左右有人遇到這篇文章時,你是一個新的JS開發者的事實將是無關緊要的。看看[在這個meta post](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts)瞭解更多關於什麼是在帖子中被認爲是「噪音」。 – Lix 2013-03-27 21:29:51

回答

4

你可以使用一個立即調用函數:

window.App = { 
    Variables: { 
     views_data: (function(){ 
      var data; 
      try{ 
       data = json_parse(Drupal.settings.royal) 
      } 
      catch(e){ 
       data = {} 
      } 
      return data; 
     }()) 
    } 
} 
+0

謝謝......你說的很對;-P – Jurudocs 2013-03-27 21:25:03

1

由於try{...}catch(err){...}是控制結構,你可以把它添加到對象文本在JavaScript中。根據你想在哪裏存儲Drupal.settings.royal,你可以寫你的對象是這樣的:

window.App = { 
    Variables: { 
     views_data: null // this is optional 
    } 
}; 

現在作爲你的目標是ready',你可以嘗試添加解析JSON它:

try{ 
    window.App.Variables.views_data = json_parse(Drupal.settings.royal); 
}catch(err){ 
    window.App.Variables.views_data = JSON.parse(Drupal.settings.royal); 
} 

很好,很乾淨。

+0

好的。但是這個問題在**對象文字中明確提出**。 – Lix 2013-03-27 21:23:23

+0

@Lix你說得對 - 對不起,沒有看到。 – 2013-03-27 21:25:15

1

1)使用一個立即調用的函數表達式

views_data : (function() { 
    var result = "", 
     json = Drupal.settings.royal; 

    try { result = json_parse(json); } 
    catch (e) { result = JSON.parse(json); } 
    return result; 
}()) 

2)除非有什麼特別的你json_parse,其實我建議這樣做其他各地的方式 - 使用瀏覽器的JSON.parse,來代替。本地實現將比你自己寫的任何東西都快。然後回落到手寫解決方案,如果JSON不存在。當然,那就是如果你在實現中沒有做任何特別的事情。