如何处理对象文字中的错误处理?

时间:2013-03-27 21:13:25

标签: javascript

如何在对象文字中进行错误处理?
至少我希望它能像这样工作:

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

3 个答案:

答案 0 :(得分:4)

您可以使用立即调用的函数:

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

答案 1 :(得分:1)

由于try{...}catch(err){...}是一种控制结构,因此无法将其添加到javascript中的对象文字中。根据您要存储的位置Drupal.settings.royal,您可以像这样编写对象:

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

现在,当你的对象准备就绪时,你可以尝试将解析的json添加到它:

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

很干净。

答案 2 :(得分: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不存在,则返回手写解决方案。当然,如果您在实施过程中没有做任何特别的事情,那就是这样。