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?
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
E pode fazer a sequencia de catches pq funciona no php5 ..
O exception captado sera de acordo com o tipo de exception disparado
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