如何从Java中将错误传回Flex / BlazeDS

时间:2013-01-16 11:30:39

标签: java flex blazeds

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

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

Flex代码: 致电响应者:

<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 execute语句不在try-catch块中(编码错误)。这实际上不会造成太多麻烦,但我们希望能够将异常打印到错误日志中,并且无论如何将execute语句放在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,其中它被显示为警报并且调用了CallResponder的错误处理程序。我们不一定希望将异常显示为警报但是调用错误处理程序是好的,因为它告诉用户出现了问题。

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

还有其他一些方法可以向Flex表明调用不成功,并且应该调用错误处理程序而不是删除try-catch块吗?

提前致谢。

1 个答案:

答案 0 :(得分:3)

在服务器端登录异常之后重新抛出异常,它将像以前一样适用于Flex前端。