1

我们有一个通过 BlazeDS 与 Java 后端通信的 Flex 应用程序。

以前,如果发生 SQL 错误,则 SQL 异常将在 Flex 应用程序中显示为警报,并调用 CallResponder 的故障处理程序,通知用户出现问题。

弹性代码:呼叫响应者:

<s:CallResponder id="loginResult" result="loginResult_resultHandler(event)" fault="displayGenericErrorMessage(event)"/>

致电服务:

var authenticationMessage:String = loginResult.lastResult as String;

旧 Java 代码:

Map resultSet = simpleJdbcCall.execute();
ArrayList list = (ArrayList) resultSet.get("RESULT_SET");

现在,从上面的代码可以看出,SQL 执行语句不在 try-catch 块内(编码错误)。这实际上不会造成太大的麻烦,但我们希望能够将异常打印到错误日志中,并且无论如何将执行语句放在 try-catch 块中是正确的。于是,代码变成了这样:

新的 Java 代码:

ArrayList list = new ArrayList();

        try {
            Map resultSet = simpleJdbcCall.execute();
            list = (ArrayList) resultSet.get("RESULT_SET");
        }
        catch (Exception e) {
            logger.error(e.getMessage());
        }

之前(没有 try-catch 块),如果发生异常,异常的消息会被传递回 Flex,在 Flex 中显示为警报并调用 CallResponder 的故障处理程序。我们不一定希望将异常显示为警报,但调用故障处理程序很好,因为它会通知用户出现问题。

现在(使用 try-catch 块),如果发生异常,则会根据需要将异常输出到日志中,但不会调用 CallResponder 的故障处理程序。Flex 认为服务成功返回,但null值不正确。

除了删除 try-catch 块之外,还有其他方法可以向 Flex 指示调用不成功并且应该调用故障处理程序?

提前致谢。

4

1 回答 1

3

只需在异常登录到服务器端后重新抛出异常,它就会像以前一样正确地传递给 Flex 前端。

于 2013-01-16T11:41:28.877 回答