【问题标题】:RhinoException from mozilla's NativeJSON.parse does not have lineNumbers来自 mozilla 的 NativeJSON.parse 的 RhinoException 没有 lineNumbers
【发布时间】:2021-09-30 18:21:50
【问题描述】:

我的 java 代码将包含 json 的文件读入一个字符串 s,并调用 NativeJSON.parse(cx, scope, s, null),如果字符串不是正确的 json,则抛出 RhinoException。但是,如果抛出异常,调用 RhinoException 对象的lineNumber() 方法返回 0。其他有用的属性也是 null 或 0。

我查看了文档并没有感到高兴。有什么建议吗?

  • 是的,s 中有新行。
  • 有一些方法可以“初始化”行/列和源,但我只有在异常被抛出后才能访问它。
  • 在上下文中有一个叫做 FEATURE_LOCATION_INFORMATION_IN_ERROR 的东西,cx,但是没有办法通过外观来设置它。我显然错过了一些东西。

(编辑)好的,我已经设法通过扩展 ContextFactory 并覆盖 hasFeature(..) 来让 hasFeature(FEATURE_LOCATION_INFORMATION_IN_ERROR) 返回 true,但我仍然没有从 RhinoException 中获得任何位置信息。

我认为它坏了,也许不再使用了..

【问题讨论】:

    标签: error-handling rhino jsonparser


    【解决方案1】:

    好的,我用运动包里的霰弹枪解决了这个问题……

    /* Two days later.. 
      */ private int
    findLine(JsonParser jp, String errmsg, List<String> lines) {
        for(int i= lines.size()-1; i>=0; --i) {
            String s = "";
            for(int j=0; j<i; j++) 
                s += lines.get(j);
            try{
                jp.parseValue(s);
            }catch(ParseException ex) {
                if(!errmsg.equals(ex.getMessage()))
                   return i;
            }
        }
        return -1;
    }
    

    【讨论】:

      猜你喜欢
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      • 2013-03-14
      • 2012-09-26
      • 1970-01-01
      • 1970-01-01
      • 2018-02-14
      • 2018-09-02
      相关资源
      最近更新 更多