Seria interessante usar transações.

Em 5 de junho de 2012 07:56, Bernardo - Sudeste Hosting <[email protected]
> escreveu:

> @Newton sua abordagem clareou minha mente.
>
> Em vez de ciar Exception unicas posso criar Exception que sirva para
> varias situações. como Email_Exception() vai ser tudo relacionado a e-mail.
> Vai reduzir bem os arquivos e códigos.
>
> Obrigado.
>
>
>
> Em 4 de junho de 2012 23:24, felipe bastos <[email protected]> escreveu:
>
> Rpz .. a principio .. meu caso ..
>>
>> Eu insiro mesmo que o usuario nao preencha nada .. eu achei um absurdo o
>> cliente pagar, exigir e nao querer preencher .. deu uma trabalheira retirar
>> validacoes .. mas foi do jeito que ele quis ..
>>
>> Mas, com relacao ao exception .. observe que ele so vai ser executado em
>> caso de falha do banco.
>>
>> Se nao inseriu, nao vai dar rollback .. é um caso de falha critica de
>> banco que merece um exception.
>>
>> Nao vi nenhuma referencia a filters nem rules no banco (nao faz check())
>> .. entao .. banco falhou, exception
>> Em 04/06/2012 23:19, "Waldson Patricio" <[email protected]>
>> escreveu:
>>
>>   Pois é voce pode ter quantos catches de quantas exceções voce quiser.
>>> Só acho exagero voce criar uma exceção para cada situação possível. Se
>>> forem do mesmo contexto, acho mais interessante voce criar um código e
>>> passar pra exceção. trhow new Cliente_Exception("Mensagem X",
>>> Cliente_Exception::SITUACAO_X);
>>>
>>> outra observação é a questão da atomicidade. Acho que essa operação tem
>>> que ser atômica, ou seja, ou executa tudo ou não executa nada. Dá uma
>>> olhada em transações.
>>>
>>> Flw.
>>>
>>> 2012/6/4 felipe bastos <[email protected]>
>>>
>>>> E pode fazer a sequencia de catches pq funciona no php5 ..
>>>>
>>>> O exception captado sera de acordo com o tipo de exception disparado
>>>> Em 04/06/2012 22:52, "felipe bastos" <[email protected]> escreveu:
>>>>
>>>> Bom cara .. eu nao li tudo mas lhe daria tais dicas ..
>>>>>
>>>>> Um cliente tem endereco
>>>>> Outras coisas tem endereco
>>>>>
>>>>> Entao .. é mais conveniente endereco servir para tudo ..
>>>>>
>>>>> $endereco ... ORM::factory('endereco');
>>>>>
>>>>> $cliente-endereco ... $endereco;
>>>>> Tabela cliente campo endereco_id
>>>>>
>>>>> $fornecedor-endereco ... ORM::factory('endereco');
>>>>> Tabela fornecedor campo endereco_id
>>>>>
>>>>> Vc nao esta validando o endereco ..
>>>>>
>>>>> Como uma pessoa chegou a me pedir para fazer formularios pra ela nao
>>>>> preencher (isso mesmo kkk)
>>>>>
>>>>> Vc poderia salvar o endereco mesmo sem dados .. vou aproveitar pra
>>>>> corrigir isso no meu codigo tbm (erros de banco com exception, eu
>>>>> simplesmente mando um erro amigavel pro user)
>>>>>
>>>>> if(! $endereco-save()){
>>>>> throw new ...Database...Exception();
>>>>> }
>>>>>
>>>>> Ai teria sentido usa try ..
>>>>>
>>>>> Vlw pela duvida .. e fica a dica
>>>>>
>>>>> Em 04/06/2012 19:57, "Bernardo Castro" <[email protected]> escreveu:
>>>>>
>>>>>> A algum tempo tenho usado o bloco “tr...catch” erradamente nos sites
>>>>>> que tenho desenvolvido. Por exemplo, ter duas funções em apenas um bloco
>>>>>> catch. Veja o código.
>>>>>>
>>>>>> http://pastebin.com/3JNEnqq0
>>>>>>
>>>>>> Se parar para pensar esse não é um forma 100% seguro para tratamento
>>>>>> de exceções. No bloco acima se o método de adicionar endereço falhar o
>>>>>> cadastro do cliente vai está errado. Tinha ciencia desse problema mas não
>>>>>> levava a serio.
>>>>>>
>>>>>> Qual seria a melhor forma de garantir o cadastro do cliente? O código
>>>>>> acima foi somente um exemplo, tenho um caso real atualmente que é o
>>>>>> seguinte.
>>>>>> Tenho um processo de cadastro de cliente onde é necessário inserir os
>>>>>> serviços adquiridos, criar a fatura, enviar e-mails de 
>>>>>> notificação.(varios
>>>>>> e-mails)
>>>>>>
>>>>>> http://pastebin.com/UYQFuUT8
>>>>>>
>>>>>> *O último método de enviar e-mail “notificar” e sem dúvida o grande
>>>>>> vilão, nele a grandes chances de ocorrer um erro por falha na conexão, 
>>>>>> host
>>>>>> fora do ar. Etc.*
>>>>>>
>>>>>>
>>>>>>  *Criando vários blocos “catch” eu consigo gerenciar detalhadamente
>>>>>> o erro caso aconteça em qualquer parte do código.*
>>>>>>
>>>>>> *Se a última etapa falhar, que é a de notificação, posso ainda
>>>>>> carregar uma página de sucesso e avisar somente que ocorreu um erro no
>>>>>> envio do e-mail.*
>>>>>>
>>>>>> *Se acontecer uma falha na parte de adicionar o serviço ao cliente,
>>>>>> que seria muito ruim, posso simplesmente apagar o cadastro do cliente 
>>>>>> feito
>>>>>> no primeiro processo.*
>>>>>>
>>>>>>
>>>>>>  *Essa seria a melhor forma de controlar os possíveis erros ? Alguém
>>>>>> faz algo diferente disso?*
>>>>>>
>>>>>>  --
>>>>>> Você está recebendo esta mensagem porque se inscreveu no grupo
>>>>>> "Kohana Php" dos Grupos do Google.
>>>>>> Para ver esta discussão na web, acesse
>>>>>> https://groups.google.com/d/msg/kohana-php/-/PgEhMsjT0psJ.
>>>>>> Para postar neste grupo, envie um e-mail para
>>>>>> [email protected].
>>>>>> Para cancelar a inscrição nesse grupo, envie um e-mail para
>>>>>> [email protected].
>>>>>> Para obter mais opções, visite esse grupo em
>>>>>> http://groups.google.com/group/kohana-php?hl=pt-BR.
>>>>>>
>>>>>  --
>>>> Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana
>>>> Php" dos Grupos do Google.
>>>> Para postar neste grupo, envie um e-mail para
>>>> [email protected].
>>>> Para cancelar a inscrição nesse grupo, envie um e-mail para
>>>> [email protected].
>>>> Para obter mais opções, visite esse grupo em
>>>> http://groups.google.com/group/kohana-php?hl=pt-BR.
>>>>
>>>
>>>  --
>>> Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana
>>> Php" dos Grupos do Google.
>>> Para postar neste grupo, envie um e-mail para
>>> [email protected].
>>> Para cancelar a inscrição nesse grupo, envie um e-mail para
>>> [email protected].
>>> Para obter mais opções, visite esse grupo em
>>> http://groups.google.com/group/kohana-php?hl=pt-BR.
>>>
>>  --
>> Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana
>> Php" dos Grupos do Google.
>> Para postar neste grupo, envie um e-mail para [email protected]
>> .
>> Para cancelar a inscrição nesse grupo, envie um e-mail para
>> [email protected].
>> Para obter mais opções, visite esse grupo em
>> http://groups.google.com/group/kohana-php?hl=pt-BR.
>>
>
>
>
> --
> Atenciosamente,
> Bernardo Sepulveda de Castro
> ------- ------- ------- -------- -------- --------
> *Sudeste Hosting...*
> Ideias e Soluções Web
> www.sudestehosting.com.br
> (21)3305-3105
>
>
>  --
> Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana
> Php" dos Grupos do Google.
> Para postar neste grupo, envie um e-mail para [email protected].
> Para cancelar a inscrição nesse grupo, envie um e-mail para
> [email protected].
> Para obter mais opções, visite esse grupo em
> http://groups.google.com/group/kohana-php?hl=pt-BR.
>

-- 
Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana Php" dos 
Grupos do Google.
Para postar neste grupo, envie um e-mail para [email protected].
Para cancelar a inscrição nesse grupo, envie um e-mail para 
[email protected].
Para obter mais opções, visite esse grupo em 
http://groups.google.com/group/kohana-php?hl=pt-BR.

Responder a