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:
Código completo:
Download PHP
Download Flex
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?
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());
}