0

我正在使用 RedQueryBuilder 在 Web 应用程序上实现表过滤器。当用户单击应用过滤器按钮时,当前的 sql 和参数被发送到后端应用程序,并且页面刷新。我将 sql 和参数读入 RQB,以便显示应用的过滤器。

在某些情况下,用户可以指定一个 RQB 不喜欢回读的过滤器 - 例如,如果他们为 Integer 字段包含一个空参数。现在我也可以做一些客户端验证,但我真的希望第一步能够在出现问题时优雅地恢复。但是,以下内容实际上并没有捕获错误:

    try {
       RedQueryBuilderFactory.create(rq, filter.initial_query, filter.initial_params);
    } catch(err) {
       //
       // There is a problem with the filter. Replace it with default values.
       //
       filter.initial_query = "SELECT * FROM \"<%=cleanTableName%>\" WHERE (\""+default_column+"\" = ?)";
       filter.initial_params = [];
       RedQueryBuilderFactory.create(rq, filter.initial_query, filter.initial_params);
       //
       // Explain the error to the user
       //
       $("#filter-message").innerText("There was a problem interpreting your filter; this is usually caused by using an empty value or text for filtering a number field. Click Clear Filter to reset the view and try again.")
    }

相反,当使用格式错误的查询加载页面时,我在控制台中看到“Uncaught java.lang.ClassCastException”。

但是,如果我在控制台中尝试此操作,我会按预期捕获异常。

注意我上面的 RQB 代码被包装在一个使用 Deferred 执行的函数中。

知道如何捕获这些错误吗?

4

1 回答 1

0

我认为这是一个简单的错误。错误报告不是很好,但应该比这更好。

如果您在 github 上提出错误最好? https://github.com/salk31/RedQueryBuilder/issues

于 2015-04-13T08:59:12.333 回答