Trabalhando com exceções com Adobe Flex e Zend AMF

Algumas linguagens de programação possuem o recurso de se trabalhar com exceções como PHP, ActionScript 3.0, Java, C# etc. É um recurso que se for bem usado, torna-se poderoso e ajuda a evitar futuras dores de cabeça para seu sistema. Uma exceção nada mais é que a possibilidade de tratar um erro sem necessariamente parar totalmente seu programa
O suporte a exceções foi adicionado no PHP a partir da versão 5, e pode ser usando em conjunto com o Adobe Flex, neste caso utilizarei o Zend AMF, uma implementação do protocolo AMF para se trabalhar em conjunto com a Flash Platform e seu server-side rodando PHP fazendo parte do ZendFramework.
Considera-se uma boa prática você criar sua classe de exceção extendendo a classe Zend_Exception.
[PHP]

[/PHP]
No Flex vamos chamar o método normalmente usando a classe RemoteObject.
[ACTIONSCRIPT3]
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
ro = new RemoteObject();
ro.destination = “nao faz diferença nenhuma usando com Zend AMF”;
ro.endpoint = “http://localhost:81/ZendAmf/teste_exception.php”;
ro.source = “br.com.leonardofranca.HelloException”;
ro.addEventListener(ResultEvent.RESULT, handlerResult);
ro.addEventListener(FaultEvent.FAULT, handlerFault);
ro.dispatchException();
}
[/ACTIONSCRIPT3]
Nossa atenção se voltará para o FaultEvent, ele é responsável por capturar as exceções vindas do servidor. Basicamente só precisaremos mostrar ao usuário o faultString.
[ACTIONSCRIPT3]
private function handlerFault(fault:FaultEvent):void
{
trace(fault.fault.faultCode);
trace(fault.fault.faultDetail);
trace(fault.fault.faultString);
Alert.show(fault.fault.faultString,”Atenção”);
}
[/ACTIONSCRIPT3]
Devemos ter o seguinte resultado:

Exception


Código completo:
Download PHP
Download Flex

ActionScript 3.0, Flex, PHP, ZendAMF , , ,

2 comments


  1. David

    Fiz alguns testes e percebi que a excessão acontece, chega ao flex com o código do erro, porem a mensagem está null.
    Tens idéia de como resolver isso?

  2. deveria aparecer a mensagem throw new MyException(“dispatch exception!!!”); ou então no seu try catch
    try{}
    catch(MyException $e)
    {
    throw new MyException($e->getMessage());
    }

Leave a Reply